假设B是一个持续时间为T的信号,每dt=1秒采样一次。 对B采用经验模态分解(EMD)后, n个本征模函数(IMF)将被提取。 利用希尔伯特变换,计算了瞬时频率(IF)和瞬时振幅(A)。因此,IF是一个矩阵,行数等于信号B的长度,列数等于n(a也是)
import emd
B = np.sin(np.linspace(0,2*np.pi,100000))+0.05*np.random.rand(100000)
dt = 1
time_vect = np.linspace(0, len(B), len(B))
## Get IMF's
imf = emd.sift.sift(B)
## Get instantaneous phase, frequency, and instantaneous amplitude
IP, IF, A = emd.spectra.frequency_transform(imf, sample_rate, 'hilbert')
现在我想用IF和a构造一个边际希尔伯特谱。我在文献中发现了以下公式:
T = len(B)
h = np.zeros(len(A.T))
for i in range(len(A.T)):
h[i] =(1/T)*np.sum(A.T[i]**2)
让我困惑的是,积分的结果是一个长度为n的向量(即imf的数量)。另一方面,每个IMF的IF值不同于其他IMF,并且它们的排序也没有增加(就像我们在小波变换中所做的那样)。我的问题是,每个IMF的频率应该是多少。例如,如果我想把h[I]作为频率的函数来绘制,我应该怎么做
目前没有回答
相关问题 更多 >
编程相关推荐