请教关于时频分析问题
本人最近在试着用时频分析函数tfrstft()来生成时间序列的时频图,但是和功率谱比较起来产生一些疑问,望大侠帮助。
上图是我生成的功率谱。
这是我用同样数据生成的时频图。
程序见
fs=200
T=-511/fs:1/fs:512/fs;
y=2*sin(5*pi*T)+3*sin(10*pi*T)+4*sin(15*pi*T)+5*sin(20*pi*T)+6*sin(25*pi*T);
save sinfile.txt y -ASCII
%%%%生成功率谱
load sinfile.txt
N=length(sinfile); %N样点的个数
fx=fft(sinfile);
df=fs/N; %df频率分辨率
n=0:N/2; %
f=n*df; %频率轴上横坐标
% subplot(121);
% plot(sinfile);
% subplot(122);
plot(f,abs(fx(n+1)));
%%%生成时频图
figure;
tfrstft(y');
请问时频图中时间轴怎么能显示的是【-511/fs,512/fs】或【0,512/fs】是这个时间呢?
并且功率谱中明显看出信号的几个频率分别为:2.5,5,7.5,10,12.5.
可是时频图中怎么显示的几个主频率都是小于1的数呢?
望大侠指点程序。 猜测tfrstft所绘的频率可能是normalize frequency!
也就是说最大的那个为12.5/200=0.0625 那如何把tfrstft所绘的频率给修正过来呢??
或用什么其他的函数来绘画时频图呢?
回复 板凳 wbh4158 的帖子
建议搜索下此版, 虽然非个人专业, 但我记得好像有提过! 搜索了没有找到!
那位高人帮忙指点一下啊!
小弟在此谢过了。
回复 板凳 wbh4158 的帖子
wbh4158,你画的tfrstft所绘的频率是normalize frequency,你将tfrstft绘画的时频图频率乘以采样频率即可。很简单,方法如下:
(1)方法一,使用tfrstft函数后,利用contour函数时,将contour函数中的f乘以采样频率即可;
(2)方法二,修改matlab安装文件下toolbox下的tfrstft函数,在函数中修改其绘图函数,其f乘以采样频率即可;
请教关于时频分析问题
那横坐标中的时间咋改啊? 请问上面图该怎么看呢?给了我们一些什么信息呢?谢谢! 回复 8 # 472889111 的帖子给出了某一频率出现的时间 回复 7 # dzkt 的帖子
时间就是Ti=t*dt;其中dt=1/fs;t=0:N-1; 我觉着..使用spectrogram来做好一些..
参数的意义更加清晰顶啊.. {:{23}:}{:{23}:} 有一个关于时频分析的问题,请高手帮忙
http://forum.vibunion.com/thread-109781-1-2.html 再乘上你的采样频率200就行了
页:
[1]