wanra 发表于 2006-11-19 13:50

如何求出小波能谱?

我想用db5小波对信号进行小波变换后,得到小波能谱,在matlab中该怎么得到呢?请大家帮帮忙

eight 发表于 2006-11-19 13:59

help dwt, wavedec

[ 本帖最后由 ChaChing 于 2010-8-15 15:11 编辑 ]

wanra 发表于 2006-11-19 20:03

谢谢,我知道这样可以对信号进行小波变换,可是我还想得到小波能谱,现在不知道该怎么办?请再帮帮忙

happy 发表于 2006-11-20 16:44

楼主要的是不是这个?

figure(1)
fs=2000; t=0:1/fs:1;
for i=1:length(t)
if t(i)<=0.2
x(i)=8*sin(60*pi*t(i)+pi/12)+6*sin(240*pi*t(i)+pi/2)+sin(300*pi*t(i)+pi/6);
else
x(i)=8*sin(60*pi*t(i)+pi/12)+6*sin(240*pi*t(i)+pi/2)+sin(300*pi*t(i)+pi/6)+20*sin(500*pi*t(i)+pi/3).*exp(-20*(t(i)-0.2));
end
end
plot(t,x); grid on
figure(2)
wpt=wpdec(x,4,'db3'); plot(wpt);
for i=0:15
    figure(3); rfs=wprcoef(wpt,);
    subplot(4,4,i+1);
    plot(rfs); grid on; title(['']); axis();
end
for i=0:3
    figure(4);   rfs=wprcoef(wpt,);
    subplot(4,1,i+1);
    plot(rfs); grid on; title(['']); axis();
end
for i=1:4
    wpt=wpdec(x,i,'db3'); e=wenergy(wpt); E=zeros(1,length(e));
    for j=1:2^i
      E(j)=sum(abs(wprcoef(wpt,)).^2);
    end
    figure(5)
    subplot(4,1,i);
    bar(e); axis(); title(['第 ',num2str(i), ' 层']);
    for j=1:length(e)
      text(j-0.2,e(j)+20,num2str(e(j),'%2.2f'));
    end
end

[ 本帖最后由 ChaChing 于 2010-8-16 01:01 编辑 ]

wanra 发表于 2006-11-21 14:32

谢谢happy,我说的就是这个意思。但是我有两个问题想请教:
1。你代码中的E与E(j)代表什么,已经有了wenergy求出e,为什么还要求E
2。在此基础上,我想知道能量随时间的变换,又该怎么办呢?
再次谢谢!
页: [1]
查看完整版本: 如何求出小波能谱?