声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 7342|回复: 36

[小波] 想问下这个小波的时频分析图是怎么画出来的

[复制链接]
发表于 2007-6-6 09:21 | 显示全部楼层 |阅读模式

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

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

x
右边的图是用小波做出来的时频图,想问下用的是MATLAB里的什么函数做出来的?谢谢
小波变换的时频分析.JPG
回复
分享到:

使用道具 举报

发表于 2007-6-6 10:04 | 显示全部楼层
MATLAB中有 小波分析的工具箱,建议看看。
 楼主| 发表于 2007-6-6 10:12 | 显示全部楼层
看了.........还是不怎么懂做这个图
 楼主| 发表于 2007-6-8 14:33 | 显示全部楼层
调用了时频分析工具箱里的tfrsocal函数
关于  Lower frequency bound
        Upper frequency bound
        Number of frequency samples
这三个参数的取值,对得到的时频图有什么效果?


为什么画出来的时频图与频谱图的频率对应不来
比如原始信号为
s1=sin(2*pi*100*t);
s2=sin(2*pi*250*t);
s=[s1,s2];
频率应该是100与250才对,可是得到的时频图是下面这个样子的
图中取Lower frequency bound=0.05
        Upper frequency bound=0.5
        Number of frequency samples =1000
小波时频分析.JPG
发表于 2007-6-8 14:43 | 显示全部楼层
关于  Lower frequency bound
        Upper frequency bound
        Number of frequency samples
这三个参数的取值,对得到的时频图有什么效果?


前面两个只决定了分析的频率范围,应该对结果没有直接影响。Number of frequency samples 为频率轴上的点数,太大的话画图显示比较困难,对作图来讲一般也不会产生很大的影响。

频率应该是100与250才对,可是得到的时频图是下面这个样子的

一般情况下好像我们的时频图都习惯从下往上频率逐渐增大,你的好像相反。
另外你的信号采样频率多少,你的频率轴没有转换成实际频率。
 楼主| 发表于 2007-6-8 15:56 | 显示全部楼层
哦,忘记说了,采样频率是1000

会不会是那个函数有什么问题?
发表于 2007-6-8 16:04 | 显示全部楼层

回复 #6 sky163 的帖子

我试过的,没有问题啊。
 楼主| 发表于 2007-6-8 21:57 | 显示全部楼层
我的程序是这样子的
得出的频谱图是下面那张
不知道是什么问题


t=0:0.001:1;
s1=sin(2*pi*100*t);
s2=sin(2*pi*250*t);
s=[s1,s2];
[tfr,t,f]=tfrscalo(s');
imagesc(t,f,abs(tfr))
频谱图.JPG
发表于 2007-6-11 18:04 | 显示全部楼层
这好象与采样频率和小波函数类型都有关.我自己作过函数应该没问题.这是'morl'小波.中心频率6.
fs=?;
[tfr,t,f,wt]=tfrscalo(xd',1:k1,6,0.001,0.50);
figure;
contour(t/fs,f(1:k1)*fs,tfr(1:k1,:));
xlabel('时间 t');
ylabel('频率 f');

[ 本帖最后由 wy558558558 于 2007-6-11 18:06 编辑 ]
发表于 2007-6-11 18:05 | 显示全部楼层
建议别用这个做,效果十分不好.而且运算时间慢.
发表于 2007-8-15 16:02 | 显示全部楼层

回复 #5 zhlong 的帖子

我用的matlab版本是7.3的,怎么使用tfrscalo时,提示版本不支持,看了下程序,发现是在tfrview函数中,有个版本判断,里面只支持5.0。请问我这个问题怎么解决呢?谢谢您。
发表于 2007-8-15 16:03 | 显示全部楼层

回复 #10 wy558558558 的帖子

请问您做小波时频图像时,一般是采用哪个函数实现的呢?
发表于 2007-8-15 16:06 | 显示全部楼层

回复 #11 mofei 的帖子

我的是7.1没问题。另外tfrview中的判断不是说只支持5.0版本吧,高于5.0的应该都可以。

[ 本帖最后由 zhlong 于 2007-8-15 16:08 编辑 ]
发表于 2007-8-15 16:19 | 显示全部楼层

回复 #13 zhlong 的帖子

comp=computer; % so as to know the running computer
MatlabVersion=version; MatlabVersion=str2num(MatlabVersion(1));
% I hope that future Matlab versions will be more compatible

if (MatlabVersion==4),
TickLabelStr='TickLabels';
elseif (MatlabVersion==5),
  TickLabelStr='Ticklabel';
else
error('unsupported matlab version. please send an email.');
end;

这段代码是从tfrview中开始的部分,这是不是用于判断matlab版本的呢?
发表于 2007-8-15 16:22 | 显示全部楼层
我的和你不一样?
if (MatlabVersion==4),
TickLabelStr='TickLabels';
elseif (MatlabVersion>=5),
TickLabelStr='Ticklabel';
else
error('unsupported matlab version. please send an email.');
end;


你把你那个==改为>=试试。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-11 17:02 , Processed in 0.078708 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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