首页 文章

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

提问于
浏览
0

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

mobile phone app analysation

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

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

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

1 回答

  • 0

    您将使用某种滑动窗口,其中 PS(f, t) 是在以 t 为中心的样本块上执行的DFT中的元素 f . 窗口大小将决定频域中的分辨率 . (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 函数) .

相关问题