某些频率下功率谱的时间变化[MATLAB]

时间:2014-12-21 16:10:27

标签: matlab audio spectrum

我想评估几十秒长度声音记录中的功率谱(幅度)变化,仅在某些选定的频率上。声音有这样的频谱(手机应用程序分析):

mobile phone app analysation

我想仅在一些单独的频率中绘制时间变化,例如在4kHz和8kHz,作为时间曲线。没有光谱图。

示例:声音长度为30秒。我希望通过FFT获得功率谱,仅采用4kHz和8kHz的频率,并在4kHz和8kHz的时间内获得两个独立的曲线。

我如何在Matlab中做到这一点?

1 个答案:

答案 0 :(得分:0)

您将使用某种滑动窗口,其中PS(f, t)是在f上居中的样本块上执行的DFT中的元素t。窗口大小将决定频域中的分辨率。 (4 kHz的迹线中是否包含3.98 kHz的功率?)

  

我希望通过FFT获得功率谱,仅采用4kHz和8kHz的频率。

不,你不是。直接计算两个频率的DFT / GDFT比计算整个FFT的速度快

此外,您可以将傅立叶变换标识应用于更新 GDFT,而不是在每个时间步重新计算它。您应用时移,添加进入窗口的样本,并减去离开的那个。

使用fft和滑动窗口的总复杂度:O(N * w * lg w)其中w是窗口大小。 使用GDFT和时移的总复杂度:O(c * N)其中c是您关注的频率计数。

两种情况下的常数都相似,所以你真的想在c < w * lg w时使用第二个。

在制作图表之前,不要忘记使用幅度(abs函数)。