我正在将 ARM CMSIS DSP 库用于信号处理应用程序。当使用超过数据块长度 10% 的抽头计数时,我发现过滤器性能良好。我知道抽头计数需要延迟信号输出。
这是否意味着应该丢弃过滤结果的第一个 TAP_COUNT 值?使用抽头计数为我的数据块的 50% 或 99% 的 FIR 滤波器会产生什么结果?这意味着大多数输出值都在延迟期内?我应该对我的块数据进行零填充以补偿群延迟吗?
让我还添加后过滤,我做了 FFT,我对时域数据不感兴趣。
编辑
系统流程:
- N 个样本以 32 位浮点小数形式收集在缓冲区 X 中。
- X 在组合操作中被 M 过滤和抽取到大小为 N,Y 的第二存储器。每次执行此步骤时,N / M 个样本都存储在 Y 中。例如,如果 N = 64 和 M = 4,则在过滤和抽取之后将 16 个样本存储在 Y 中。此操作通过https://arm-software.github.io/CMSIS_5/DSP/html/group__FIR__decimate.html实现。
- 步骤 2 执行 M 次后,Y 中现在有 M 个值。系统取 FFT(Y)。
步骤 2 的存在是为了 A) 减少内存使用和 B) 防止由于采样率降低而可能发生的 Y 数据混叠。
编辑二
我在下面的图片中显示了正弦波上的 10 抽头滤波器和 101 抽头滤波器之间的区别,以及来自 ARM CMSIS FIR_F32 函数的输出。延迟的差异非常明显。表达我的问题的另一种方式是,这在什么时候开始改变被过滤信号的频域特征?我的直觉是,一旦延迟窗口足够宽,可以在数据块中埋藏任何周期性的东西,基本上是块数据长度的一半,负面影响就会开始出现?