如何计算一个特定频率的信号功率?

信息处理 频谱
2022-02-24 00:32:53

给定一个信号,s(t), 采样频率fs, 如何计算某一特定频率下的信号功率fq? 因为我只对权力感兴趣fq,计算 FFT 似乎有点过头了。

我可以在 stackexchange 上识别以下预先存在的内容:

  1. 这篇文章有效地建议了 Goetzel 的算法。有一个预先存在的MATLAB 函数似乎可以提供所需的内容。

  2. 这篇文章建议对信号进行带通滤波,然后取平方信号的总和。这对我来说似乎很有意义,但我想知道带通滤波器实际上可以如何选择性地赋予窗口函数的类似同步的频率内容。

  3. 这篇文章讨论了特定信号频段的功率,并提出了使用 MUSIC、goertzel 等的建议。

我的兴趣不在于频段,而在于某个特定频率的功率。我的想法是将频率为 fq 的正弦曲线与信号进行卷积,然后将结果信号中的功率相加(匹配滤波器)。

我原以为会有一个更直接的解决方案,但我很难找到开始有效文献综述的词。

1个回答

最终,如果您的噪声是白色的,那么匹配滤波器将是最好的方法(乘以一个频率并求和 - 如果它很复杂,您将乘以复共轭 - 两者都是一种相关形式)。这相当于在 DFT 中计算单个 bin(假设您的频率位于 bin 中心,否则等效地,可以将 DFT 中的操作修改为以您的特定频率为中心)。这种方法的带宽对于白噪声将具有与类似砖墙滤波器的等效功率,带宽为1/T在哪里T是相关性的持续时间;但重要的是,频率响应是频率上的 Sinc 函数(或 Dirichlet Kernel,如果离散为采样 Sinc),这意味着这种方法对其他频率位置的非白噪声敏感(相对较远的强音会出现在您的功率测量);Sinc 的主瓣仅以每倍频程 6 dB 的频率滚降。因此,对于白噪声,这种方法是最佳的,对于其他有色噪声的应用,建议在测量功率之前对信号应用适当设计的滤波器以衰减“带外”噪声。

对于使用相当于单个 DFT bin 来测量单个音调,Goertzel 是一个众所周知的选择,可以有效地执行此操作。