emd.imftools.is_imf#

emd.imftools.is_imf(imf, avg_tol=0.05, envelope_opts=None, extrema_opts=None)[source]#

Determine whether a signal is a ‘true IMF’.

Two criteria are tested. Firstly, the number of extrema and number of zero-crossings must differ by zero or one. Secondly,the mean of the upper and lower envelopes must be within a tolerance of zero.

Parameters:
imf2d array

Array of signals to check [nsamples x nimfs]

avg_tolfloat

Tolerance of acceptance for criterion two. The sum-square of the mean of the upper and lower envelope must be below avg_tol of the sum-square of the signal being checked.

envelope_optsdict

Dictionary of envelope estimation options, must be identical to options used when estimating IMFs.

extrema_optsdict

Dictionary of extrema estimation options, must be identical to options used when estimating IMFs.

Returns:
array [2 x nimfs]

Boolean array indicating whether each IMF passed each test.

Notes

These are VERY strict criteria to apply to real data. The tests may indicate a fail if the sift doesn’t coverge well in a short segment of the signal when the majority of the IMF is well behaved.

The tests are only valid if called with identical envelope_opts and extrema_opts as were used in the sift estimation.