为什么FFT和HHT边际谱差这么远?
本帖最后由 牛小贱 于 2014-9-12 13:16 编辑以下是我用matlab求的FFT频谱和HHT频谱,为何纵轴差这么远啊,这数量级差的太远了吧?
一下是我求边际谱FFT谱的程序:求傅立叶谱程序:y2=fft(y);
Fourier_Amp=sqrt(real(y2).^2+imag(y2).^2);
fori=1:length(Fourier_Amp)/2
Real_Fourier_Amp(i)=Fourier_Amp(i)+Fourier_Amp(length(Fourier_Amp)-i);%折半
end
Ts=2e-6;
fs=1/Ts;
f_Fourier=(0:length(Fourier_Amp)/2-1)/length(Fourier_Amp)*fs;
plot(f_Fourier,Real_Fourier_Amp)
title('FourierSpectrum');
xlabel('Frequency/Hz');
ylabel('amplitude')求边际谱程序:>>imf=emd(y);>>=hhspectrum(imf);>>=toimage(A,fa,tt,length(tt));>>for k=1:size(E,1)bip(k)=sum(E(k,:))*(2e-6);end>>Ts=2e-6;>>fs=1/Ts;>>f=(0:(length(y)-3))/(length(y))*(fs/2);>>plot(f,bip)>>titile('Marginal Spectrum of Ultrasonic Signal')>>xlabel('Frequency/Hz')>>ylabel('Amplitude')
真切期望得到大家的解答,谢谢!!!
恳请大家的真知灼见呀! 按照我给的程序做 shuihai707 发表于 2014-9-12 11:42
按照我给的程序做
嗯???你的程序可以贴一下吗? shuihai707 发表于 2014-9-12 11:42
按照我给的程序做
哦哦,我搜到你的程序了,你的FFT和边际谱的数量级是一样的,为何呢。。。 shuihai707 发表于 2014-9-12 11:42
按照我给的程序做
您好,为什么我的频谱两端会有那么高的幅值呀?这是由于HHT和FFT算法本身造成的吗? cwb 发表于 2014-9-13 09:40
您好,为什么我的频谱两端会有那么高的幅值呀?这是由于HHT和FFT算法本身造成的吗?
去均值即可,0Hz是直流分量。 shuihai707 发表于 2014-9-13 15:38
去均值即可,0Hz是直流分量。
均值指的是原始信号的算术平均吗?意思是原始数据减去均值之后再做变换就不会出现两端的高幅值了是吧? shuihai707 发表于 2014-9-13 15:38
去均值即可,0Hz是直流分量。
imf=emd(y-mean(y));我这样 之后效果好一些了,但是还有一点。。 把信号贴出来 shuihai707 发表于 2014-9-14 12:14
把信号贴出来
ok,我的原始信号是这样的,我把它的HHT谱图也贴出来了。
这个HHT图是用这两句得到的:
=toimage(A,fa,tt);
disp_hhs(E,[],500000);
开始我是 用=toimage(A,fa,tt,length(tt));求E,但是这样会出现out of memory 的错误,于是去掉了参数ength(tt),我不知道这样做会不会有什么问题,因为我之前用另外一台电脑是可以执行=toimage(A,fa,tt,length(tt))的,这样求得的E的维数和 =toimage(A,fa,tt);求得的E的维数相差很远。
谢谢指教!
你给我这样的信号,我怎样仿真啊? 本帖最后由 cwb 于 2014-9-14 22:11 编辑
shuihai707 发表于 2014-9-14 22:01
你给我这样的信号,我怎样仿真啊?
呵呵,实在不好意思
你下载还要消耗体能,我不会设置成不消耗体能的。。你不会介意吧?
shuihai707 发表于 2014-9-13 15:38
去均值即可,0Hz是直流分量。
我在EMD之前做了滤波处理,效果好多了:有用的信号占了主要成分 做了FFT,发现低频部分有一谱峰