2.58 Empirical Mode Decomposition (Pro)Empirical-mode-decomposition
Summary
This Empirical Mode Decomposition app can be used to perform Empirical Mode Decomposition, and Spectrum Analysis including Frequency Transform and Hilbert-Huang transform.
The App requires Python library emd. The library and other dependent Python libraries will be automatically installed when the App is launched the time.
Tutorial
- Open a new project or a new workbook. Generate XY data with steps in section below. We will get a skewed, nonlinear near-bed wave
-
![Emd input.png](//d2mvzyuse3lwjc.cloudfront.net/doc/en/App/images/Empirical_Mode_Decomposition/500px-Emd_input.png?v=69997)
- Highlight column B, and then click the Empirical Mode Decomposition icon,
, from Apps Gallery.
- When the dialog is open, switch to Sifting tab, clear the checkbox of Maximum IMFs line, and then set this parameter to 5.
-
![Emd sifting.png](//d2mvzyuse3lwjc.cloudfront.net/doc/en/App/images/Empirical_Mode_Decomposition/400px-Emd_sifting.png?v=70005)
- Go to Spectrum Analysis tab, select the Hilbert-Huang Transform checkbox, and then under Hilbert-Huang Transform Options group, clear With Time Dimension (2D) checkbox.
-
![Emd spectrum analysis.png](//d2mvzyuse3lwjc.cloudfront.net/doc/en/App/images/Empirical_Mode_Decomposition/500px-Emd_spectrum_analysis.png?v=70006)
- Click Output tab, and change Output to New Book.
- Click OK.
-
![Emd results.png](//d2mvzyuse3lwjc.cloudfront.net/doc/en/App/images/Empirical_Mode_Decomposition/600px-Emd_results.png?v=70007)
Generating data of skewed, nonlinear near-bed wave
To simulate a non-linear waveform using equation 9 in [1].
- Choose menu Window: Script Window to open Script Window if it is not yet open
- Copy and paste scripts below in Script Window, highlight all lines and press Enter to run them
range rx = [Book1]Sheet1!col(A); // Column A range
range ry = [Book1]Sheet1!col(B); // Column B range
sample_rate = 2000; // Sampling frequency
seconds = 1; // Number of seconds
num_samples = sample_rate * seconds; // Number of samples
f = 10; // Fundamental frequency
nonlin_deg = 0.25; // Degree of non-linearity
nonlin_phi = -pi / 4; // Skew in non-linearity
rx = data(0, seconds, seconds / (num_samples-1)); // Generate the time vector, and put it to column A
// The following is the equation 9 in [1]
factor = sqrt(1-nonlin_deg*nonlin_deg);
num = nonlin_deg * sin(nonlin_phi) / 1 + factor;
numerator = num + sin(2*pi*f*rx);
denominator = 1 - nonlin_deg * cos(2*pi*f*rx + nonlin_phi);
ry = factor * (numerator / denominator);
ry = ry - sin(2*pi*0.1*rx); // Add part of cycle as a trend
white_noise ry; // Add some noise
[1] Abreu, T., Silva, P. A., Sancho, F., & Temperville, A. (2010). Analytical approximate wave form for asymmetric waves. Coastal Engineering, 57(7), 656–667. https://doi.org/10.1016/j.coastaleng.2010.02.005
Algorithm
EMD: Empirical Mode Decomposition
|