4.2 短时傅里叶变换
短时傅里叶变换(Short-Time Fourier Transform,STFT)常用于缓慢时变信号的频谱分析,可以观察沿时间变化的频谱信号。弥补了频谱分析中不能观察时间的缺点,也弥补了时域分析不能获取频率的缺点。
经STFT处理后的信号具有时域和频域的局部化特性,可以借助其分析信号的视频特性。设计思路如下。
1)窗函数选择hamming窗,最大DFT点数不大于256。
2)用户输入(传值)signal、window、overlap、N、fs等。根据窗的长度截取响应长度的信号序列,然后二者对应的点逐点相乘,得到的数即为加窗截取后的值。之所以需要乘以窗函数,是因为如果直接截取信号,会使得截取的信号出现突变(波形上表现为直角),经过变换后会出现无限谐波影响截取后FFT的效果。
3)根据窗的大小,将signal拆分,并与窗函数相乘。
4)对每个signal片段进行N点FFT,并求出能量谱密度。
5)调用绘图方法,把能量谱密度(功率谱密度)用不同的颜色表示出来绘图。
4.2.1 短时傅里叶变换与谱分析
STFT是和傅里叶变换相关的一种数学变换,用以确定时变信号其局部区域正弦波的频率与相位。利用短时傅里叶变换(STFT)分析非平稳信号的频率内容随时间的变化规律。
STFT基本原理可以理解为对一段长信号,截取每一段时间的短信号做FFT,将得到的频谱图时间沿时间轴排列,即可得到时频的云图。
STFT是一种基于窗函数的变换,一般来说,短窗能够提供较好的时域解析度,长窗能够提供较好的频域解析度。STFT就是将原来的傅里叶变换在时域截短为多段,分别进行傅里叶变换,每一段记为时刻ti,对应FFT求出频域特性,即可粗略估计出时刻ti时的频域特性(也就是同时知道了时域和频域的对应关系)。用于信号截短的工具叫作窗函数(宽度相当于时间长度),窗越小,时域特性越明显,但是此时由于点数过少导致FFT降低了精确度,导致频域特性不明显。
离散时间傅里叶变换(Discrete Time Fourier Transform,DTFT)的数学公式如下所示。
式中,x(n)为在采样数n处的信号幅度。ω的定义如下。
STFT被计算为一系列加窗数据帧的快速傅里叶变换,其中窗口随时间“滑动”(slide)或“跳跃”(hop)。
在MATLAB中,stft命令用来对信号进行短时傅里叶变换,它的使用格式见表4-14。
表4-14 stft命令的使用格式
(续)
例4-10:创建信号STFT。
解:MATLAB程序如下。
运行结果如图4-10所示。
图4-10 信号STFT运行显示结果
在MATLAB中,istft命令用来对信号进行短时傅里叶逆变换,它的使用格式见表4-15。
表4-15 istft命令的使用格式
例4-11:创建信号STFT和ISTFT变换。
解:MATLAB程序如下。
运行结果如图4-11所示。
图4-11 信号STFT和ISTFT变换的显示结果
4.2.2 短时傅里叶变换谱图
信号的STFT是最早提出的一种时频二维表示方法,简单易实现,许多联合时频分析的应用都是由它开始的。在各种实际应用中也常采用它的能谱分布表示方法,也就是基于短时傅里叶变换的谱图表示。
谱图具有非线性性质,对于多分量信号将产生类似于Wigner分布中的交叉项干扰,从而引入了模糊,影响信号分析结果。
1.频谱图
在MATLAB中,spectrogram命令用来进行短时傅里叶变换,得到信号的频谱图,它的使用格式见表4-16。
表4-16 spectrogram命令的使用格式
例4-12:绘制信号的短时傅里叶变换谱图。
解:MATLAB程序如下。
运行结果如图4-12所示。
图4-12 短时傅里叶变换谱图显示结果
例4-13:对比窗函数与长度对信号的短时傅里叶变换谱图。
解:MATLAB程序如下。
运行结果如图4-13所示。
图4-13 两种信号的短时傅里叶变换谱图对比
对于短时傅里叶变换,最重要的还是窗口长度的选取。当频域刻度和平移步长足够密时,增加的只是生成图像的大小,但是物理层面的分辨率却没有改变。改变物理层面分辨率的是窗口长度。
窗口长度较大(如2048),频率能够清晰地显示出来,但是时间上有些模糊。窗口长度比较小(如256),时间上的分界线能够清晰显示,但是频率的值却不能清晰读出。
例4-14:对比重叠样本数对的短时傅里叶变换谱图的影响。
解:MATLAB程序如下。
运行结果如图4-14所示。
图4-1 重叠样本数对谱图的影响
例4-15:显示短时傅里叶变换单边与双边谱图。
解:MATLAB程序如下。
运行结果如图4-15所示。
图4-15 信号傅里叶变换频谱图
2.交叉谱图
在MATLAB中,xspectrogram命令用来进行短时傅里叶变换,得到信号的交叉谱图,它的使用格式见表4-17。
表4-17 xspectrogram命令的使用格式
例4-16:创建对称凸二次Chirp波形。
解:MATLAB程序如下。
运行结果如图4-16所示。
图4-16 对称凸二次chirp波形显示结果