rugalor 发表于 2007-11-13 17:00

关于短时傅立叶变化的怪图

大家好,我刚开始学matlab,照着书上的例子做了一个短时傅立叶变换,但是图怪怪的,不知为什么和书上不一样:

程序是:
sig=real(amgauss(128).*fmlin(128));
>> figure(1);
>> plot(sig,'LineWidth',2);
>> plot(sig,'LineWidth',2);
>> xlabel('时间');
>> ylabel('幅值');
>> h=1;
>> sig=hilbert(sig);
>> =tfrstft(sig,1:128,128,h);
>> figure(2);
>> contour(t,f(1:length(f)/2),abs(tfr));

运行后只出了时域波形图,第二个图是空的,然后我把contour(t,f(1:length(f)/2),abs(tfr));改成了imagesc(t,f(1:128),abs(tfr(1:128,:)));
终于有图了,但是纵坐标怪怪的,不知为什么啊

rugalor 发表于 2007-11-13 17:05

谢谢zhlong版主这么快回复

[ 本帖最后由 rugalor 于 2007-11-13 17:09 编辑 ]

yangzj 发表于 2007-11-13 17:06

第四个参数H是窗序列,是一个向量,怎么可以就用1,不要这个参数试试

rugalor 发表于 2007-11-13 17:19

本帖最后由 wdhd 于 2016-9-8 14:00 编辑

原帖由 yangzj 于 2007-11-13 17:06 发表
第四个参数H是窗序列,是一个向量,怎么可以就用1,不要这个参数试试
去掉了h还是没有图,加个矩形窗ones(127,1)也没东西,这个contour是个什么函数啊

zhlong 发表于 2007-11-13 17:19

同意yangzj版主的意见,楼主先看一下该函数的帮助文件

zhlong 发表于 2007-11-13 17:21

tfrstft(sig,1:length(sig),512,hamming(41),1);
试试

songzy41 发表于 2007-11-14 09:04

本帖最后由 wdhd 于 2016-9-8 14:00 编辑

原帖由 rugalor 于 2007-11-13 17:19 发表


去掉了h还是没有图,加个矩形窗ones(127,1)也没东西,这个contour是个什么函数啊
在函数tfrstft中应该加上窗h的,加矩形窗ones(127,1)能给出结果的,只是窗太长看不出信号变化的细节。
又contour是画等高线图,在谱图中是画等幅值的图。
页: [1]
查看完整版本: 关于短时傅立叶变化的怪图