❶ Attempt to execute SCRIPT Emd2 as a function:
跟你的程序不太一樣
imf=emd(x);
m=size(imf,1);
figure
for i=1:m
subplot(m,1,i);
plot(1:N,imf(i,1:N));
ylabel(['imf',num2str(i)]);
end %%IMF圖
y=0;
for i=1:m
y=imf(i,:)+y;
end %%restructure
a=corrcoef(x,y); %%完備性
%求時頻譜
[A,f,t]=hhspectrum(imf(1:end-1, :));
%繪制瞬時包絡圖和瞬時頻率圖
figure;
subplot(211),plot(t/N,f(1,:)*fs);xlabel('時間 t/s');ylabel('頻率');title('imf1分量瞬時頻率');
subplot(212),plot(t/N,f(2,:)*fs);xlabel('時間 t/s');ylabel('頻率');title('imf2分量瞬時頻率');
❷ 我求得了imf作HHT後的瞬時頻率跟你寫的一樣,但是仍然存在負值,
應該不超過1/2
的確有負的我重看了一下,Hilbert變換中的頻率與傅里葉中頻率意義不同,可能有負值
不過在它的函數工具箱里有處理
[A,f,t]=hhspectrum(imf);%對IMF分量求取瞬時頻率與振幅:A:是每個IMF的振幅向量,f:每個IMF對應的瞬時頻率,t:時間序列號
[E,t,Cenf]=toimage(A,f);%將每個IMF信號合成求取Hilbert譜,E:對應的振幅值,Cenf:每個網格對應的中心頻率這里橫軸為時間,縱軸為頻率
%即時頻圖(用顏色表示第三維值的大小)和三維圖(三維坐標系:時間,中心頻率,振幅)
❸ 用hht計算瞬時頻率為什麼為負值
應該不超過1/2 的確有負的我重看了一下,Hilbert變換中的頻率與傅里葉中頻率意義不同,可能有負值 不過在它的函數工具箱里有處理 [A,f,t]=hhspectrum(imf); %對IMF分量求取瞬時頻率與振幅:A:是每個IMF的振幅向量,f:每個IMF對應的瞬時頻率
❹ 這是hht語音去噪的代碼。求大神指教錯在哪裡
你用的hht工具箱是哪一個?你發給我看看,[email protected],另外,運行時間與你的語音信號的長度本身有關系,語音數據時長是多少?