项目说明

介绍 matlab 中 spectrogram 函数的用法,其功能为实现短时傅里叶变换并得到信号的频谱图。

语法:

 [S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)

短时傅里叶变换

短时傅里叶变换的基本原理如下:

使用一个窗函数在时域信号上(有重叠地)不断平移,如下图所示:
在这里插入图片描述
其中,window 指窗的长度,noverlap 指窗的上一个位置和下一个位置之间重叠的长度(实际上noverlap>window/2noverlap>window/2noverlap>window/2,此处图例仅为解释说明)。

每平移到一个新位置,窗函数内的信号会被计算一次频谱,假设频谱长度为LLL,则每个时间点上对应的长度为LLL,时间点的个数为
k=fix((Nx−noverlap)/(window−noverlap))k = fix((Nx-noverlap)/(window-noverlap))k=fix((Nxnoverlap)/(windownoverlap))
其中NxNxNx是信号长度。

频谱中包含的频率点数LLL计算如下:

对于实信号x,如果nfft为偶数,则LLL为(nfft/2+1),如果nfft为奇数,则LLL为(nfft+1)/2。

关于nfft的含义,举例如下:

若采样频率为10000,则时频图上频率纵坐标显示到5001,共5001个点。设置nfft为30000,则相当于对频率点数的扩充,即linspace(0, 5001, 15001)。此时时频图上频率纵坐标仍然显示到5001,但却有15001个频率点数。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐