想问下这个小波的时频分析图是怎么画出来的
右边的图是用小波做出来的时频图,想问下用的是MATLAB里的什么函数做出来的?谢谢 MATLAB中有 小波分析的工具箱,建议看看。 看了.........还是不怎么懂做这个图 调用了时频分析工具箱里的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 关于Lower frequency bound
Upper frequency bound
Number of frequency samples
这三个参数的取值,对得到的时频图有什么效果?
前面两个只决定了分析的频率范围,应该对结果没有直接影响。Number of frequency samples 为频率轴上的点数,太大的话画图显示比较困难,对作图来讲一般也不会产生很大的影响。
频率应该是100与250才对,可是得到的时频图是下面这个样子的
一般情况下好像我们的时频图都习惯从下往上频率逐渐增大,你的好像相反。
另外你的信号采样频率多少,你的频率轴没有转换成实际频率。 哦,忘记说了,采样频率是1000
会不会是那个函数有什么问题?
回复 #6 sky163 的帖子
我试过的,没有问题啊。 我的程序是这样子的得出的频谱图是下面那张
不知道是什么问题
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)) 这好象与采样频率和小波函数类型都有关.我自己作过函数应该没问题.这是'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 编辑 ] 建议别用这个做,效果十分不好.而且运算时间慢.
回复 #5 zhlong 的帖子
我用的matlab版本是7.3的,怎么使用tfrscalo时,提示版本不支持,看了下程序,发现是在tfrview函数中,有个版本判断,里面只支持5.0。请问我这个问题怎么解决呢?谢谢您。回复 #10 wy558558558 的帖子
请问您做小波时频图像时,一般是采用哪个函数实现的呢?回复 #11 mofei 的帖子
我的是7.1没问题。另外tfrview中的判断不是说只支持5.0版本吧,高于5.0的应该都可以。[ 本帖最后由 zhlong 于 2007-8-15 16:08 编辑 ]
回复 #13 zhlong 的帖子
comp=computer; % so as to know the running computerMatlabVersion=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版本的呢? 我的和你不一样?
if (MatlabVersion==4),
TickLabelStr='TickLabels';
elseif (MatlabVersion>=5),
TickLabelStr='Ticklabel';
else
error('unsupported matlab version. please send an email.');
end;
你把你那个==改为>=试试。