matlab自带了短时傅里叶变换的分析函数,老版本的matlab是specgram函数,新的改成了spectrogram函数,虽然一说到时频分析,都会说到小波分析,小波分析要比短时傅里叶要好云云,但在分析信号的瞬时频谱时,短时傅里叶还是有它的用武之地的。前一阵也看了一些有关小波分析的matlab实现,发现帮助中使用小波也多是除噪、压缩,都说小波是时频显微镜,它的用武之地还是在于查看高频在哪一级分解中,进而可以有效滤除一些信号,比如除噪,所以短时傅里叶变换查看瞬时频率正好互补一下。时频分析还认识的不深,一个阶段的想法而已。
另外,之前对matlab的扫频函数chirp做过总结,见
http://blog.sina.com.cn/s/blog_6163bdeb0100qbqo.html,里面就是使用spectrogram函数来查看产生的扫频信号的瞬时频率的,当时不知道那个函数是干啥,就感觉好神奇,现在正好看到,总结一下吧!
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---采样频率,默认值归一化频率