声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1058|回复: 0

[FFT] STFT存在频率偏移和幅值错误的问题

[复制链接]
发表于 2013-10-17 21:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1. %%短时傅立叶变换
  2. clear;
  3. clc;
  4. fs=1000;%采样频率
  5. Ts=1/fs;%采样时间间隔
  6. TT=1;%终止时间
  7. t=0:Ts:TT;%采样时刻                    
  8. N=fs*TT;%采样点
  9. %signal
  10. x=zeros(size(t));
  11. x1=sin(2*pi*50*t);x2=sin(2*pi*200*t);
  12. x=[x1(1:300),x2(301:end)];
  13. figure(3);
  14. plot(x);
  15. title('信号波形图'); %图名
  16. xlabel('时间'); %x轴
  17. ylabel('振幅'); %y轴
  18. %STFFT
  19. Nw=51;              %窗函数长
  20. L=Nw/2;             %窗函数每次移动的样点数
  21. Tn=floor((N-Nw)/L)+1;      %计算把数据x共分成多少段
  22. nfft=51;
  23. TF=zeros(Tn,nfft);  %时频矩阵
  24. for i=1:Tn

  25. xw=x(25*i-24:25*i+26).*hamming(Nw)';  %加Hamming窗
  26.     temp=fft(xw,nfft);         %FFT变换
  27.     temp=fftshift(temp);       %频谱以0频为中心
  28.     TF(i,:)=temp;              %把谱图存放在TF中
  29. end
  30. figure(4);
  31. fnew=((1:nfft)-nfft/2)*fs/nfft;
  32. tnew=(1:Tn)*L*Ts;
  33. [F,T]=meshgrid(fnew,tnew);
  34. mesh(T,F,abs(TF));
  35. colorbar;
  36. title('STFT时频图')
  37. xlabel('时间  t/ms'); ylabel('频率  f/Hz');
复制代码
作出图之后,发现频率不是关于0Hz对称的,而且幅值也不对,不是除以N/2的关系。另外,如何把画只含正频率的图?谢谢!!
QQ截图20131017210847.jpg QQ截图20131017210824.jpg

点评

反对: 1.0
反对: 1
幅值错误没看出来。 频移是肯定存在的,貌似。在小波分析中也存在这个问题,一个解释是窗函数的中心没有和信号能量中心重合,不知道具体怎么解释  发表于 2013-10-18 09:06
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-5 02:34 , Processed in 0.077618 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表