我想评估功率谱(振幅)在几十秒长的声音记录中的变化,只在一些选定的频率上。声音的频谱是这样的(手机应用分析):

我只想绘制一些独立频率的时间变化,例如4 8kHz和8 8kHz,作为时间曲线。没有光谱图。
例如:声音的长度为30秒。我想通过快速傅立叶变换得到功率谱,只取4 8kHz和8 8kHz上的频率,并在4 8kHz和8 8kHz上得到两个独立的曲线。
我如何在Matlab中做到这一点?
发布于 2014-12-22 00:29:11
您将使用某种类型的滑动窗口,其中PS(f, t)是在以t为中心的样本块上执行的f元素。窗口大小将决定频域中的分辨率。(4 kHz的跟踪中是否包含3.98 kHz的电源?)
我想通过
得到功率谱,只取4 8kHz和8 8kHz的频率。
不,你不需要。直接计算两个频率的DFT/GDFT比计算整个FFT快得多。
此外,您可以将傅立叶变换恒等式应用于时移以更新GDFT,而不是在每个时间步重新计算它。你应用时移,加入进入窗口的样本,然后减去离开的样本。
使用fft和滑动窗口的总复杂度:O(N * w * lg w),其中w是窗口大小。使用GDFT和时移的总复杂度:O(c * N),其中c是您关心的频率计数。
这两种情况下的常量都是相似的,所以您确实希望在c < w * lg w时使用第二个常量。
在绘制图形之前,不要忘了获取幅值(abs函数)。
https://stackoverflow.com/questions/27591177
复制相似问题