C++FIR噪声滤波器

C++ FIR noise filter

本文关键字:滤波器 噪声 C++FIR      更新时间:2023-10-16

我正在挖掘一些有关从C++中过滤 IQ 数据样本中的噪声的信息。

我了解到,这可以通过使用一个简单的过滤器来完成,该过滤器计算最后几个数据样本的平均值并将其应用于当前样本。

您是否

对这种过滤有任何进一步的经验,或者您是否建议使用一些现有的FIR过滤库?

感谢您的评论!

不幸的是,它并不像"只需获得一些库,它将为您完成所有工作"那么简单; 数字滤波器是一个相当复杂的主题。

  1. 仅当测量以固定的时间间隔(在数字滤波器中称为"采样率")进行时,才很容易对数据应用数字滤波器。否则(如果时间间隔不同),应用数字滤波器并非易事(我怀疑您可能需要FFT来做到这一点,但我在这里可能是错的)。

  2. 数字滤波器(IIR和FIR)很有趣,因为一旦你知道系数,你就不需要一个库,很容易自己编写它(例如,参见这里的第一张图片:https://en.wikipedia.org/wiki/Finite_impulse_response:看起来很简单,对吧?);找到系数是很棘手的。

  3. 作为找出系数的先决条件,您需要了解很多关于滤波器的信息:您需要知道您需要哪种滤波器(如果是在解调之后 - 您可能需要低通,否则请参阅下面 MSalters 的评论),您需要了解什么是"转折频率",并且您需要了解如何将这些频率映射到您的样本(例如, 您可以说您的样本每秒出现一次 - 或任何其他速率,但此选择会影响您想要的"转折频率")。一旦你对"你需要的数字滤波器"有了这种理解 - 查找系数很容易,你可以在 MatLab 中完成,或者使用在线计算器,在谷歌中查找"数字滤波器计算器"。