我使用的是OEM ADC IC,其最小采样率为4000Hz。我想通过定制的现有解决方案发送捕获的数据,这些解决方案的参数不打算更改。
由于ADC的采样率为4000 by,因此我希望减少发送的样本数量,即抽取(我认为是什么),在抽取因子4之后,我将有1000 by的样本,然后我可以插回4000 by。我在一秒内收集了32个样本125次,结果是4000赫兹。
我从here和其他参考文献中学习了基本的抽取和插值,并使用了CMSIS FIR抽取器和FIR内插器。
我将参数设置如下:查看CMSIS decimator和interpolator
number of coefficients in the filter: 4
decimation factor: 4
filter coefficients: [1, 0, 0, 0]
number of input samples to process per call: 32upsample 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等值。我在这里犯了什么错误?有什么需要我参考的资料吗?
发布于 2021-10-21 09:53:50
1,0,0,0是不正确的。这有点像len=4的增量函数,如果你使用这些系数进行滤波,就会出现混叠。
在下采样之前,你需要一个过滤器。如果你想降低噪声水平60或80 dB,你需要更多像this这样的系数。所以你应该设计一个合适的过滤器。如果你有64个系数的计算问题,你可以使用CIC滤波器。有关CIC或滤波器设计的更多信息,请参阅chapter 10
https://stackoverflow.com/questions/69590581
复制相似问题