bluelonger 发表于 2007-6-19 21:10

我边际谱作的图怎么不对啊

弱弱的问题:我刚学HHT,照着例子作了个图,怎么不对啊
clear;
fs=1200;    %fs为采样频率;
N=1200;   %采样点数
t=1/fs:1/fs:N/fs;
y1=1*sin(800*pi*t+900)+sin(200*pi*t);
imf=emd(y1);
emd_visu(y1,1:length(y1),imf);
figure(5);
=hhspectrum(imf);
=toimage(A,fa,tt,length(tt));
for k=1:size(E,1)
bjp(k)=sum(E(k,:))*1/fs;
end
f=(0:N-3)/N*fs/2;
plot(f,bjp);
xlabel('频率 / Hz');
ylabel('幅值')

zhangnan3509 发表于 2007-6-19 21:39

回复 #1 bluelonger 的帖子

怎么了?出什么事了

bluelonger 发表于 2007-6-19 21:48

怎莫图是这样的啊,400的频率和两个幅值都不对啊

zhangnan3509 发表于 2007-6-19 21:52

回复 #3 bluelonger 的帖子

因为有了相位的变化。去掉相位后如图

[ 本帖最后由 zhangnan3509 于 2007-6-19 21:59 编辑 ]

bluelonger 发表于 2007-6-19 22:01

不好意思,我是个菜鸟,请问相位怎样去掉啊?

为什么这个做出来就很好呢 ?

clear;
fs=1200;    %fs为采样频率;
N=1200;   %采样点数
t=1/fs:1/fs:N/fs;
y1=1*sin(800*pi*t+900);
%%%%%%%%%%%%%求边际谱
=hhspectrum(y1);
=toimage(A,fa,tt,length(tt));
for k=1:size(E,1)
    bjp(k)=sum(E(k,:))*1/fs;
end
f=(0:N-3)/N*fs/2;
plot(f,bjp);
xlabel('频率 / Hz');
ylabel('幅值');

bluelonger 发表于 2007-6-19 22:03

幅值为什么 都不是1啊,麻烦了版主

zhangnan3509 发表于 2007-6-19 22:03

回复 #3 bluelonger 的帖子

或者你可以把sin(800*pi*t+450*pi)得到的结果就是一样的,因为900这个相位不是周期的整数倍

zhangnan3509 发表于 2007-6-19 22:10

回复 #5 bluelonger 的帖子

其实这个不难理解,两个正弦叠加的话,此时相位不同,这时候进行EMD分解得出来的IMF就不会是这个两个正弦信号,你可以看看这个iMF分解结果,那么此时进行Hilbert变换,求边际谱得到就不是原来的两个正弦的频率!
你看到的是例子没错,但是你没好好看清楚!破凰也作过类似的例子,他没进行EMD分解,而是把这两个正弦信号直接作为了iMF所以结果就是收敛很好的直线。
那是为了例子好看,而不是标准结果。
假如相位没有这样的变化,这时候就不会像你的图一样了。
但是不管怎么说,分解还是有误差的,所以这直线收敛的不如破凰图那么理想。

zhangnan3509 发表于 2007-6-19 22:13

回复 #6 bluelonger 的帖子

当你看见了IMF图就应该知道不是1了,有残余分量,另外出现了四阶IMF,所以能量就不能全部收敛到200,和400上了

bluelonger 发表于 2007-6-19 22:30

谢谢斑竹了,基本明白了
再问一下HHT边际谱的幅值究竟有没有什么实际的意义呢
比如fft做出来纵轴就是幅值,很清楚,HHT的幅值又是什么呢

zhangnan3509 发表于 2007-6-19 22:39

回复 #10 bluelonger 的帖子

http://forum.vibunion.com/forum/thread-45278-1-1.html
在这个帖子15楼我解释过了。
HHT幅值代表各个局部的能量

[ 本帖最后由 zhangnan3509 于 2007-6-19 22:40 编辑 ]

黄建招 发表于 2012-12-19 00:00

学习中。。。。谢谢
页: [1]
查看完整版本: 我边际谱作的图怎么不对啊