旗舰水自然 发表于 2013-10-17 21:09

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

%%短时傅立叶变换
clear;
clc;
fs=1000;%采样频率
Ts=1/fs;%采样时间间隔
TT=1;%终止时间
t=0:Ts:TT;%采样时刻                  
N=fs*TT;%采样点
%signal
x=zeros(size(t));
x1=sin(2*pi*50*t);x2=sin(2*pi*200*t);
x=;
figure(3);
plot(x);
title('信号波形图'); %图名
xlabel('时间'); %x轴
ylabel('振幅'); %y轴
%STFFT
Nw=51;            %窗函数长
L=Nw/2;             %窗函数每次移动的样点数
Tn=floor((N-Nw)/L)+1;      %计算把数据x共分成多少段
nfft=51;
TF=zeros(Tn,nfft);%时频矩阵
for i=1:Tn

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

页: [1]
查看完整版本: STFT存在频率偏移和幅值错误的问题