3

我正在寻找一种很好的方法来估计信号的功率(定期采样说10千赫)与时间在刚刚一个频率(比如说50赫兹)。我可以计算谱图,然后以目标频率对其进行切片。这看起来效率很低,因为我只关心一个频率与一个时间的功率。我意识到正好在一个频率下的功率为零(在极限内),我想在目标频率附近的一个小频率范围内计算信号的功率。如何估计(在给定频率的信号功率)与时间python

我目前的“解决方案”是使用Matplotlib的mlab.specgram()函数,它返回一个二维数组的权力,我只是把它切片。我不满足于此,因为我不完全相信mab.specgram()函数,因为它需要大量不同的时间来计算不同信号的频谱图(即使它们的长度相同)。

回答

7

有很多方法可以做到这一点。一种简单但有效的方法是应用带通滤波器(50Hz),从而消除所有其他信号,然后计算最后N个采样的RMS功率。

另一种是你可以做一个窗口化的FFT,但不是实际的FFT - 只需计算你想要的bin。该窗口可以是任何你想要的(例如凯撒alpha 8)。单仓的DFT只是信号与e ^(i * n * w)(其中w取样率为50Hz,n是迭代器)的乘积之和。

有可能比这更简单的方法。这取决于你想要恢复的东西,信号的移动速度以及你是否期望混合中的噪声或其他信号。如果你不是试图从别人的喧嚣中挑选出一个信号,那么你就不必费尽心思。

+0

你说得对,我没有想太多。过滤的东西非常简单,并且具有稍后很容易解释的好处。谢谢! – 2011-02-10 07:25:08