本文主要给定一小段音频,通过短时傅里叶变换和小波变换制作时频图。
0、准备工作
首先先准备音频,预先用ffmpeg切割一段时长为1s的音频,音频的采样率为44100,但采样到的点数为46076个点,时长约为1.04s。
1、短时傅里叶变换
首先,在matlab中,短时傅里叶变换的分析函数为spectrogram,其使用情况如下:
语法:
[S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
[S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
说明:当使用时无输出参数,会自动绘制频谱图;有输出参数,则会返回输入信号的短时傅里叶变换。当然也可 以从函数的返回值S,F,T,P绘制频谱图,具体参见例子。
参数:
x---输入信号的向量。默认情况下,即没有后续输入参数,x将被分成8段分别做变换处理,如果x不能被平 分成8段,则会做截断处理。默认情况下,其他参数的默认值为
window---窗函数,默认为nfft长度的海明窗Hamming
noverlap---每一段的重叠样本数,默认值是在各段之间产生50%的重叠
nfft---做FFT变换的长度,默认为256和大于每段长度的最小2次幂之间的最大值。另外,此参数除了使用一 个常量外,还可以指定一个频率向量F
fs---采样频率,默认值归一化频率。
Window---窗函数,如果window为一个整数,x将被分成window段,每段使用Hamming窗函数加窗。如果 window是一个向量,x将被分成length(window)段,每一段使用window向量指定的窗函数加