我正在实施"经验模式分解"在Java中。下一步是希尔伯特 - 黄 变换,我需要找到如何获得"瞬时频率"。有人知道怎么做吗?
使用EMD方法,任何复杂的数据集都可以分解为有限且通常很少的组件,这是一组固有模式函数(IMF)。下一步是希尔伯特 - 黄变换。由此我计算了信号的相位,在我必须计算瞬时频率之后,我在Matlab代码中搜索,如以下链接:http://read.pudn.com/downloads100/sourcecode/math/408870/emd/instfreq/archive/ifreq.m__.htm
但我不明白。
由于
答案 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中还有一些工具和方法。