Hilbert-Huang变换:瞬时频率

时间:2014-04-28 17:54:52

标签: java matlab frequency decomposition hilbert-curve

我正在实施"经验模式分解"在Java中。下一步是希尔伯特 - 黄 变换,我需要找到如何获得"瞬时频率"。有人知道怎么做吗?

使用EMD方法,任何复杂的数据集都可以分解为有限且通常很少的组件,这是一组固有模式函数(IMF)。下一步是希尔伯特 - 黄变换。由此我计算了信号的相位,在我必须计算瞬时频率之后,我在Matlab代码中搜索,如以下链接:http://read.pudn.com/downloads100/sourcecode/math/408870/emd/instfreq/archive/ifreq.m__.htm

但我不明白。

由于

3 个答案:

答案 0 :(得分:0)

希尔伯特 - 黄变换是经验模式分解(EMD)和希尔伯特变换的结合。

首先,EMD是一种为您提供固有模式功能(IMF)的算法。

然后将希尔伯特变换应用于每个IMF。

从IMF,Hilbert变换给出一个pi / 2相位延迟信号,您可以从中计算相位,以及相位的时间导数,它与瞬时频率成正比。

您将在该页面上找到有趣的教程和有关EMD算法变体的详细信息:http://perso.ens-lyon.fr/patrick.flandrin/emd.html

答案 1 :(得分:0)

实例频率可以用Python计算

<testbot> LaRochelle,
<testbot> British.

答案 2 :(得分:0)

您可以使用Hilbert-Huang变换(HHT)处理信号数据,该方法是将经验模式分解(EMD)和Hilbert频谱分析(HSA)与Matlab或Python结合使用。在Matlab或Python中,您可以直接使用HHT方法,而无需自己计算瞬时频率(IF)。

例如使用Matlab:

首先,您可以通过实现emd来发信号来获取IMF和残差,代码为: [IMF,residual,info] = emd(signal,'Interpolation','pchip','Display',0);

然后,可以通过hht(IMF,fs)获得IF,即IMFINSF,其中fs是采样频率 [P,F,T,IMFINSF,IMFINSE] = hht(IMF,fs);

此外,Python中还有一些工具和方法。