短时频域分析
短时傅里叶变换
设时域信号为x(l),分帧加窗处理后得到的第n帧信号为xn(m),则xn(m)满足下式:
其中N是每一帧信号的长度,n是帧序号,m是一帧中数据的序号。
时域信号x(l)的离散短时傅里叶变换为:
其中k是谱线号。
当N是2的整数倍时,这个离散短时傅里叶变换可以使用FFT来计算。
MATLAB程序
MATLAB程序演示信号分帧、加窗、求离散短时傅里叶变换,并最终使用三维图展示结果。
其中打开的test.wav文件是一个8kHz采样率的音频文件,这个文件可以自由录制得到。
clc
clear
close all
[x,fs]=audioread('test.wav');% 读入数据文件
t=(1:length(x))/fs;
wlen=256; % 帧长
inc=128; % 帧移
win=hanning(wlen); % 窗函数
nfft=wlen