|
本帖最后由 wdhd 于 2016-9-12 14:09 编辑
原帖由 kexin 于 2008-8-14 08:50 发表
[BT,tt,FreqBins]=tfrstft(y1,1:n,2048,h);
得到最大值的时间是3.17秒,对应的频率是2.97852Hz。
实在是搜不到有好的有关求这种函数最大值时对应的变量的帖子,只能再次拜托songzy411了。也不知道怎么回事,做出来的图像的频率好像比你给出的值要小。
我把求出y1后的程序列出来:
%y1=y1'; %不要转置了,tfrstft函数中的x是列向量
h=hanning(255);
[BT,tt,FreqBins]=tfrstft(y1,1:n,2048,h);
FreqBins = FreqBins(1:1024) * fs * 2;
Pyy=abs(BT).^2;
imagesc(t,FreqBins,Pyy(1:1024,:));
axis('xy');
PP=Pyy(:); %变成一维数组
[Pmax,Ploc]=max(PP);
fprintf('一维数组中最大值的位置: %10d\n',Ploc);
Tm=fix(Ploc/2048)+1;
Fm=mod(Ploc,2048);
fprintf('相应时间位置: %10d 频率位置: %10d\n',Tm,Fm);
fprintf('最大值的时间: %8.5f 频率: %8.5f\n',t(Tm),FreqBins(Fm)); |
|