sky163 发表于 2007-6-6 09:21

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

右边的图是用小波做出来的时频图,想问下用的是MATLAB里的什么函数做出来的?谢谢

pengweicai 发表于 2007-6-6 10:04

MATLAB中有 小波分析的工具箱,建议看看。

sky163 发表于 2007-6-6 10:12

看了.........还是不怎么懂做这个图

sky163 发表于 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=;
频率应该是100与250才对,可是得到的时频图是下面这个样子的
图中取Lower frequency bound=0.05
      Upper frequency bound=0.5
      Number of frequency samples =1000

zhlong 发表于 2007-6-8 14:43

关于Lower frequency bound
      Upper frequency bound
      Number of frequency samples
这三个参数的取值,对得到的时频图有什么效果?

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

频率应该是100与250才对,可是得到的时频图是下面这个样子的
一般情况下好像我们的时频图都习惯从下往上频率逐渐增大,你的好像相反。
另外你的信号采样频率多少,你的频率轴没有转换成实际频率。

sky163 发表于 2007-6-8 15:56

哦,忘记说了,采样频率是1000

会不会是那个函数有什么问题?

zhlong 发表于 2007-6-8 16:04

回复 #6 sky163 的帖子

我试过的,没有问题啊。

sky163 发表于 2007-6-8 21:57

我的程序是这样子的
得出的频谱图是下面那张
不知道是什么问题


t=0:0.001:1;
s1=sin(2*pi*100*t);
s2=sin(2*pi*250*t);
s=;
=tfrscalo(s');
imagesc(t,f,abs(tfr))

wy558558558 发表于 2007-6-11 18:04

这好象与采样频率和小波函数类型都有关.我自己作过函数应该没问题.这是'morl'小波.中心频率6.
fs=?;
=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 编辑 ]

wy558558558 发表于 2007-6-11 18:05

建议别用这个做,效果十分不好.而且运算时间慢.

mofei 发表于 2007-8-15 16:02

回复 #5 zhlong 的帖子

我用的matlab版本是7.3的,怎么使用tfrscalo时,提示版本不支持,看了下程序,发现是在tfrview函数中,有个版本判断,里面只支持5.0。请问我这个问题怎么解决呢?谢谢您。

mofei 发表于 2007-8-15 16:03

回复 #10 wy558558558 的帖子

请问您做小波时频图像时,一般是采用哪个函数实现的呢?

zhlong 发表于 2007-8-15 16:06

回复 #11 mofei 的帖子

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

[ 本帖最后由 zhlong 于 2007-8-15 16:08 编辑 ]

mofei 发表于 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版本的呢?

zhlong 发表于 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;

你把你那个==改为>=试试。
页: [1] 2 3
查看完整版本: 想问下这个小波的时频分析图是怎么画出来的