前段时间磕盐接触到了希尔伯特频谱,它是一种信号分解方法,1998年提出来的,主旨是把复杂信号分解为简单信号的加权和,就像傅里叶变换小波变换一样,但是他和傅里叶变换等方法的区别是他是纯粹时间域的分解,但是每个子信号却可以表示不同的频率成分,于是可以得到像小波变换那样的时频平面,但是这个方法明显比小波分解冷门的多,而且在我的实验结果里确实远远远远弱于小波分解,不过也算是自己辛苦几天看论文和写代码的成果,特此记录,如果后面有人用到这个,可以快速入门
伪代码,我读论文总结出来的,主要就是经验模式分解EMD和希尔伯特变换两步
伪代码的latex 代码
\begin{algorithm}
\caption{Hilbert-Huang spectral analysis \cite{Branch1998}}
\label{hhsa}
\begin{algorithmic}[1]
\Require The original signal vector $\boldsymbol x$.
\Ensure The Hilbert-Huang Spectrum, i.e. an energy-time-frequency distribution of $\boldsymbol x$.
\Function{EMD}{$\boldsymbol x, SegLen, ResidueThreshold, SD_T$}
\State $\boldsymbol{IMF} \gets \boldsymbol 0$
\State $i \gets 0$
\State $ N \gets length(\boldsymbol{x}) / SegLen$
\State $residue \gets \infty$
\While {$residue > ResidueThreshold$}
\State $i \gets i+1$
\State $\boldsymbol{x_i} \gets \boldsymbol{x}-\sum_i \boldsymbol{IMF}$
\State $SD \gets \infty$
\While{$SD > SD_T$}
\For {$j=1 \to j=N$}
\State $\boldsymbol{seg_{ij}} \gets \boldsymbol{x_i}[(1+(j-1)*SegLen) : (j*SegL