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]