【问题标题】:Decimation with CMSIS FIR coefficients seems incorrectCMSIS FIR 系数的抽取似乎不正确
【发布时间】:2021-10-15 21:04:04
【问题描述】:

我正在使用最小采样率为4000Hz 的 OEM ADC IC。我想通过不打算更改参数的定制现有解决方案发送捕获的数据。

由于 ADC 的采样率为 4000Hz,我想减少发送的样本数,即抽取(我的想法),在抽取 4 倍后,我将有 1000Hz 的样本,然后我可以插值回 4000Hz。 我在一秒钟内收集了 32 个样本 125 次,这使其频率为 4000Hz

我在其他参考资料中学习了 here 的基本抽取和插值,并且正在使用 CMSIS FIR Decimator 和 FIR Interpolator。

我设置参数如下查看 CMSIS decimatorinterpolator

number of coefficients in the filter: 4
decimation factor: 4
filter coefficients: [1, 0, 0, 0]
number of input samples to process per call: 32
upsample factor: 4
number of filter coefficients in the filter: 4
filter coefficient buffer: [1, 0, 0, 0]
number of samples to process: 8

滤波器系数以 {0,0,0,1} 的形式存储在变量中,即时间倒序,如文档 here 中所述。

我对 FIR 滤波器系数的理解是否正确,即 [1, 0, 0, 0],因为我想简单地抽取数据而不是实际过滤数据?

在实施不正确的抽取器后,我得到的值为 [0, -1, 0, -1, -1, -1, -1, -1] 等。我在这里犯了什么错误?有什么需要参考的吗?

【问题讨论】:

    标签: embedded signal-processing cmsis


    【解决方案1】:

    没有。 [1, 0, 0, 0] 不正确。它类似于 len=4 的 delta 函数 如果使用这些系数进行滤波,就会出现混叠。

    在下采样之前,您需要一个过滤器。如果您想将噪音水平降低 60 或 80 dB,则需要更多系数,例如 this。所以你应该设计一个合适的过滤器。如果您有 64 个系数的计算问题,您可以使用 CIC 滤波器。 更多关于CIC或Filter设计的信息,可以看chapter 10

    【讨论】:

    • 感谢您的意见和参考。我将浏览您共享的文档并实施相同的操作。
    • 不客气。要设计合适的过滤器,您可以在 Matlab 中使用“fdatool”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2013-12-03
    • 2012-06-09
    • 2014-07-16
    • 2023-01-08
    • 2021-05-28
    相关资源
    最近更新 更多