| 2.65 Empirical Mode Decomposition (Pro)Empirical-mode-decomposition SummaryThis 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
 
 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.
 
 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.
 
 Click Output tab, and change Output to New Book. Click OK.
 
 Generating data of skewed, nonlinear near-bed waveTo 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
 AlgorithmEMD: Empirical Mode Decomposition
 |