## 2 Theoretical Considerations of the Digital Filter
### EMD Algorithm  
The key part of the HHT algorithm is EMD because any complex dataset can be decomposed into a finite that admits a well-behaved Hilbert transform. Because the decomposition is based on the local characteristic time scale of the data, it is applicable to nonlinear and nonstationary processes [8]. During signal processing, high frequency noise from the input data may be considered as different simple intrinsic mode oscillations [8]. In terms of signal processing, the EMD algorithm is viewed as an a posteriori method based on adaptive characteristic scale separation. This process is useful when the input signal oscillation is nonlinear and/or nonstationary. EMD is not suitable for sampling using a fixed time slot in the time series because the local mean of a signal is defined by enveloping without resorting to any time scale. Technically, EMD employs a sifting process and a cubic spline technique for smoothing and filtering a signal [8]. The cubic spline interpolation is applied as a two-sided filter, which improves the confidence interval of the dataset distribution. HHT is designed to decompose nonlinear and nonstationary signals, especially those with high volatility and fast frequency changes. The signal is adaptively decomposed into components and, after the decomposition of each step, the transformed signal is known as an Intrinsic Mode Function (IMF), which includes the different time scales intrinsic to the signal. IMF is a mono-component and can be transformed into an instantaneous frequency. IMF signals have also been defined as a function with a zero mean and with as many zero crossings as maxima or minima. The HHT process is divided into two parts: EMD and Hilbert Spectral Analysis (HSA). Figure 1 shows the EMD mechanism using a sifting process. It starts by identifying the maxima and minima points, extracting them, interpolating the maxima and minima envelopes, and computing the means of the local envelope. A nonlinear and nonstationary time series dataset is denoted as \(x_{i}(t)\). The IMF, \(c_{i}(t)\) is defined under the conditions that: (i) The numbers of extrema (maxima plus minima) and zero crossings in the entire data series must either be equal to or differ by at most one; and (ii) At any point, the mean value of the envelope defined by the local maxima and that defined by the local minima, must be zero [10]. These conditions are met  
\[ \begin{bmatrix}nU_{i}(t)+nL_{i}(t)=nZ_{i}(t),\\ nU_{i}(t)+nL_{i}(t)=nZ_{i}(t)\pm 1\end{bmatrix}  \tag{1}\]  
and  
\[ \begin{bmatrix}\frac{U_{i}(t)+L_{i}(t)}{2}=0\end{bmatrix} \]  
where \(nU_{i}(t)\), \(nL_{i}(t)\) and \(nZ_{i}(t)\), are the values of the maxima (upper peak), minima (lower peak) and zero crossing, of the EMD respectively. The EMD algorithm can be represented as follows. Figure 1: Flowchart of Empirical Mode Decomposition (EMD) in the Hilbert-Huang transform (HHT). **Step 1:** Spline the EMD datasets denoted to \(x_{k}(t)\) by interrelating using \(U_{i}(t)\) and \(L_{i}(t)\), which is given by  
\[f_{\text{int}}\left\{U_{k}(t),x_{k}(t)\right\}=U_{\text{1 int}}(t),U_{\text{2 int} }(t),U_{\text{3 int}}(t),....,U_{\text{nint}}(t) \tag{2}\]  
and  
\[f_{\text{int}}\left\{L_{i}(t),x_{k}(t)\right\}=L_{\text{1 int}}(t),L_{\text{2 int }}(t),L_{\text{3 int}}(t),....,L_{\text{1 int}}(t) \tag{3}\]  
The algorithm used for parabolic interpolation can be described as follows. 1. When constructing the upper and lower envelopes, we calculate the parabola coefficients of \(ax^{2}+bx+c\) using \(x(k-1)\), \(x(k)\), \((k+1)\);
2. If the second-degree coefficient, \(a\), equals zero, is \(x(k)\) is certainly not an extremum so the sliding window moves further on a discrete value of \(x(k)\);
3. If the first-degree coefficient, \(b\), equals zero, \(x(k)\) is an extremum, either a maximum or minimum, depending on the sign. We then calculate the top of this parabola by introducing \(t_{\text{top}}=\dfrac{-b}{2a}\) ; similarly, applying to the bottom part of the parabolic curves;
4. Repeat (2) and (3) and stop after executing \(x(k+n)\).