幅值怎么不对劲啊?
我是用以下程序做的三维图形,感觉幅值怎么不对劲? 应该是三个幅值都一样的吧?以下是我的程序
clear;
fs=2000;
N=1024;
t=0:1/fs:N/fs;
z=sin(20*pi*t)+sin(200*pi*t)+sin(400*pi*t);
imf=emd(z);
=size(imf);
for i=1:m
subplot(m,1,i);
plot(imf(i,:));
end
figure(3)
dt=1/fs;
%h = nspab(imf',500,0,500,dt);最后两项为其实时间和结束时间
h = nspab(imf',500,0,500,0,N/fs);
subplot(211)
surf(h(1:200,50:end-20))
shading interp
xlabel('时间(点数)','FontSize',12);
Ylabel('频率(Hz)','FontSize',12);
zlabel('幅值','FontSize',12);
title('a','FontSize',12)
view([-75,25])
yt=subplot(223)
imagesc(h(1:200,:))
Ylabel('频率(Hz)','FontSize',12);
xlabel('时间(点数)','FontSize',12);
set(yt,'ydir','nor')
title('b','FontSize',12)
ms=mspc(h)
subplot(224)
plot((1:length(ms)),ms)
xlabel('频率(Hz)','FontSize',12);
ylabel('幅值','FontSize',12);
title('c','FontSize',12)
[ 本帖最后由 zhangnan3509 于 2008-3-30 15:30 编辑 ] 频率的幅值为什么200hz的会比前两个小那么多?
谢谢 http://forum.vibunion.com/forum/viewthread.php?tid=50010
你可以参考一下这个帖子,我自己也尝试了,用rilling的程序出来的结果也是有一定的衰减
回复 3楼 的帖子
我仔细看了斑竹在http://forum.vibunion.com/forum/thread-45278-1-1.html15楼的总结破凰那个程序做出来效果确实不错,难道只是因为他那个没有进行emd分解?
我试着把破凰程序里的信号相加再进行emd分解,再划边际谱,得到的效果相当不理想,这样看来就是说emd分解的时候出现了很大的虚假分量? 我记得有一篇帖子里好象是说,要分解的频率最好相差2倍以上分解才不容易产生虚假分量,是有这么一说么?
回复 4楼 的帖子
不是这个意思。边际谱的幅值在实际应用中,经常会出现问题。zhlong版主发这个帖子总结了以下原因。一个是EMD分解的原因,一个是整周期采样问题。
(也许还有其他的原因,zhlong版主也只是阶段性的总结)
比如两个正弦信号相叠加,幅值相同,如果频率差别在2倍以内,此时emd分解效果就差一些不能将这两个信号区别开。但这不是虚假分量的问题。可能是程序的问题,因为没有用过huang本人的程序不知道效果会怎么样。
[ 本帖最后由 zhangnan3509 于 2008-3-30 21:20 编辑 ]
回复 5楼 的帖子
版主真及时,非常感谢。来论坛好久了,看了不少高人的指点,也学习了不少HHT的理论,非常的感谢。
我起初的想法是这样的,我要处理的信号正常状态下是低频的,当然也夹杂有一些高频成分,我本来是想利用边际谱来判断信号,如果高频量过大,则应该是判为信号突变,如一楼我所举的例子,高频部分的幅值居然比实际的小了那么多,很是纳闷。
请问大家是怎么来利用HHT来处理自己的信号的呢?
回复 5楼 的帖子
黄在原文中指出,边际谱的幅值代表某个频率成分的能量,能量越大,该频率的振动波在整个时间轴出现的可能性也越大。时间取得越长,振动能量越大,边际谱的幅值也就越大。因此,我认为边际谱的幅值和信号的幅值没有直接联系。引用在边际谱相关讨论中的这句话,结合图形看出,高频部分的边际谱帅减最大,是否是由于采样频率较低,相对来说高频中采的点较少,所以高频部分部分边际谱的幅值就比其他的低,不知道我这个想法对不对? 你的nspab函数用的不对,用你前面注释了的那个h = nspab(imf',500,0,500,dt);得到的幅值就是对的了,我已经运行了程序得到了图片
[ 本帖最后由 sjdwjt 于 2008-4-14 22:17 编辑 ] sjdwjt at 2008-4-14 22:16:49
你的nspab函数用的不对,用你前面注释了的那个h = nspab(imf',500,0,500,dt);得到的幅值就是对的了,我已经运行了程序得到了图片
请问大侠,为什么你做出来的图片时间点数能到采样的时间点数,而我的程序运行出来只能到400个点数?
能否告诉我这个怎么实现啊?多谢了先~
回复 楼主 prideheart 的帖子
请问楼主可否把mspc.m能发一下么?
页:
[1]