matlab时频分析之短时傅里叶变换 spectrogram
短时傅里叶变换常用于缓慢时变信号的频谱分析,可以观察沿时间变化的频谱信号。
其优点如下图所示,弥补了频谱分析中不能观察时间的缺点,也弥补了时域分析不能获取频率的缺点。
1 STFT的基本原理
基本原理可以理解为对一段长信号,截取每一段时间的短信号做fft,将得到的频谱图时间沿时间轴排列,及可得到时频的云图。
2 matlab中实现
这里采用最基础的spectrogram函数作为分析函数。虽然在其它很多地方都能找到能实现更高级用法的函数,比如逆变换:
https://ww2.mathworks.cn/matlabcentral/fileexchange/45577-inverse-short-time-fourier-transform-istft-with-matlab
但是这里只是单纯的做可视化分析。
代码如下:
%短时傅里叶变换展示
fs=2^10; %采样频率 fs=65536hz
dt=1/fs; %时间精度
timestart=-4;
timeend=4;
t=(0:(timeend-timestart)/dt-1)*dt+timestart;
L=length(t);
%设置信号
z=sin(2*pi*5.*t).*(t<-2)