EMD is a method to empirically break down any nonlinear, non-stationary data set into a finite number of intrinsic mode functions (IMF) through a sifting process.
Ideally, each IMF will include a narrow band of oscillations, in order for Hilbert spectral analysis to give meaningful results. Still, EMD fails to distinguish components whose frequencies are too similar [1]}. Also, noisy data could lead to mode mixed IMFs, meaning that the IMF extracted by EMD might contain oscillations of widely different scales or that multiple IMFs contain the same oscillatory mode [2]}. A mode mixed IMF typically has no physical meaning. The time-varying filter EMD mitigates mode mixing and improves the IMFs frequency resolution, replacing the known IMF concept with the local narrow-band oscillatory modes. The tvf-EMD employs a B-spline [3]} as the time-varying filter to extract these local narrow-band modes. Furthermore, the algorithm's sifting process stops when the ratio between the Loughlin instantaneous bandwidth \(B_{\text{Loughlin}}(t)\)  and the weighted average of the instantaneous frequencies \(\varphi _{\text{average}}(t)\)  is lower than a selected threshold \(\xi \) . The definition of \(B_{\text{Loughlin}}(t)\) , \(\varphi _{\text{average}}(t)\) , and a full description of the algorithm can be found in [4]}. Regarding tvf-EMD, the relevant parameters to consider are the bandwitdth threshold ratio \(\xi \)  and the B-spline order \(n\) . While \(\xi \)  determines the threshold on the bandwidth of the extracted modes to stop the sifting process, \(n\)  is related to the time varying filter frequency roll off. Following [4]}, these parameters were set to \(\xi =0.1\)  and \(n=26\) . pytvfemd [6]} is a Python package that implements the tvf-EMD algorithm based on an existing MATLAB code [7]}. In this paper it was used for scattering characterization, but it is also available for the analysis of other non linear and non stationary data. The main function tvfemd takes the signal as input and returns its intrinsic mode functions. Other inputs are the algorithm's main parameters (i.e., \(\xi \)  and \(n\) ) and the number of IMFs to be extracted.
