signal-processing - 对信号执行 FFT 时,相关通带的信息是否可以使算法更加高效?

标签 signal-processing fft microcontroller

在信号处理讨论中,人们经常谈论 fft 的点数(例如 512、1024、2048),并且还会谈论信号的位数。讨论的另一个重要部分应该是感兴趣的信号。例如,如果人们确实对低于 60Hz 的信号感兴趣,那么 FFT 算法测试较高频率下的功率(以及傅立叶系数?)似乎是一种浪费。 FFT 算法的常见实现中是否存在这种情况?这种节省对于在低功耗微 Controller 上执行 FFT 的人来说可能非常重要。

最佳答案

您可以进行低通滤波、抽取并使用较短的 FFT。但是,如果质量过滤的成本占 NLogN 的很大一部分,那么它(加上较短的 FFT)的成本可能与仅进行较长的 FFT 并丢弃不需要的结果箱的成本一样多。

您可以将 Goertzel 滤波器仅用于所需的 DFT 结果频率箱,但同样,如果您需要 LogN 结果箱或更多,优化的完整 FFT 可能会花费更少的计算(并且也稍微更准确)。因此,如果您需要比 log(N) 少得多的结果箱,例如使用慢速微 Controller 进行 DTMF 解码,这非常有用。

关于signal-processing - 对信号执行 FFT 时,相关通带的信息是否可以使算法更加高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339925/

相关文章:

matlab - 格林函数的傅里叶变换 - 两个信号之间的差异几乎相同

c - 将 16 位整数与 double 相乘的最快方法是什么?

microcontroller - 关于CAN总线

c - 将 MATLAB 代码移植到优化 C 的有效方法

python - 似乎无法在 scipy 中正确使用 welch 函数

python - 汉宁窗值在 Python 和 Matlab 中不匹配

fft - FFT 和逆 FFT 之间有什么实际区别吗?

python - 使用 Python 从原始 WAV 音频文件中去除噪音(嘶嘶声)

java - 检测音频输入的频率 - Java?

arduino - 有没有办法处理 AVR/Arduino 微 Controller 中的堆内存碎片?