1、短时傅立叶变换试验为了克服傅立叶变换的时频局部化方面的不足,也是为了对时域信号作局部分析,D.Gabor 于 1946 年提出了窗口傅立叶变换(简记为 WFT) 。WFT 的公式形式(),()jwtRGfwbftbed(),()jwtRGfbftbed其中,实函数 w(t)为是时窗函数,窗函数 w(t)具有较强的衰减性,所以要精心选择窗函数。下面是一个短时傅立叶变换的代码程序function timefreq(x,Nw,window)% 待分析信号,行向量,Nw 时窗宽度subplot(2,2,1);plot(real(x);%描绘待分析信号X=fft(x);%快速傅里叶变换X=fftshif
2、t(X);%调整 0 频位置subplot(2,2,2);plot(abs(X);%描绘幅度谱Lap=Nw/2;%重叠宽度Tn=(length(x)-Lap)/(Nw-Lap);%计算分段数目nfft=2ceil(log2(Nw);%做 fft 的点数TF=zeros(Tn,nfft);%时频矩阵for i=1:Tnif(strcmp(window,rec)Xw=x(i-1)*10+1:i*10+10);%加窗矩形处理elseif(strcmp(window,Hamming)Xw=x(i-1)*10+1:i*10+10).*Hamming(Nw);%加 hamming 处理elseif(str
3、cmp(window,Blackman)Xw=x(i-1)*10+1:i*10+10).*Blackman(Nw);%加 black 处理elseif(strcmp(window,Gauss)Xw=x(i-1)*10+1:i*10+10).*Gauss(Nw);%加 Gauss 处理 else return;endtemp=fft(Xw,nfft);%求 ffttemp=fftshift(temp);%调整 0 频位置TF(i,:)=temp;%保存分段 fft 结果end%绘制时频分析结果 subplot(2,2,3);fnew=(1:nfft)-nfft/2)/nfft;tnew=(1:Tn)*Lap;F,T=meshgrid(fnew,tnew);mesh(T,F,abs(TF);xlabel(n);ylabel(w);zlabel(Gf);subplot(2,2,4);contour(T,F,abs(TF);xlabel(n);ylabel(w);例子:clc ;clear;N=400;x=zeros(1,N);T=0:N-1;x=exp(j*4*pi*(T/80).2);figure(1);timefreq(x,20,rec);figure(2);timefreq(x,20,Blackman);