声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1812|回复: 4

[编程技巧] 如何求出小波能谱?

[复制链接]
发表于 2006-11-19 13:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

使用道具 举报

发表于 2006-11-19 13:59 | 显示全部楼层
help dwt, wavedec

[ 本帖最后由 ChaChing 于 2010-8-15 15:11 编辑 ]
 楼主| 发表于 2006-11-19 20:03 | 显示全部楼层
谢谢,我知道这样可以对信号进行小波变换,可是我还想得到小波能谱,现在不知道该怎么办?请再帮帮忙
发表于 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,[4 i]);
    subplot(4,4,i+1);
    plot(rfs); grid on; title(['[4 ',num2str(i),']']); axis([0 2000 min(rfs) max(rfs)]);
end
for i=0:3
    figure(4);     rfs=wprcoef(wpt,[4 i]);
    subplot(4,1,i+1);
    plot(rfs); grid on; title(['[4 ',num2str(i),']']); axis([0 2000 min(rfs) max(rfs)]);
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,[i,j-1])).^2);
    end
    figure(5)
    subplot(4,1,i);
    bar(e); axis([0 length(e) 0 130]); 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 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2006-11-21 14:32 | 显示全部楼层
谢谢happy,我说的就是这个意思。但是我有两个问题想请教:
1。你代码中的E与E(j)代表什么,已经有了wenergy求出e,为什么还要求E
2。在此基础上,我想知道能量随时间的变换,又该怎么办呢?
再次谢谢!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-24 23:29 , Processed in 0.051552 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表