C ++ FIR噪声滤波器

时间:2015-06-17 06:45:00

标签: c++ filtering signal-processing

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

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

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

感谢您的评论!

1 个答案:

答案 0 :(得分:1)

不幸的是,它并不像“只是得到一些图书馆那样简单,它会为你完成所有的工作”;数字滤波器是一个非常复杂的主题。

  1. 只有当您的测量以固定的时间间隔(在数字滤波器中称为“采样率”)时,才能轻松地将数字滤波器应用于您的数据。否则(如果时间间隔变化),应用数字滤波器并不容易(我怀疑你可能需要FFT来做这件事,但我可能在这里错了。)

  2. 数字滤波器(IIR和FIR)很有意思,只要你知道系数,你就不需要一个库,你很容易自己编写它(例如,见第一张图片) :https://en.wikipedia.org/wiki/Finite_impulse_response:看起来很简单,对吗?);它正在寻找棘手的系数。

  3. 作为找出系数的先决条件,你需要了解很多关于滤波器的知识:你需要知道你需要什么样的滤波器(如果它是在解调之后 - 你可能需要低通,否则请参阅下面的MSalters评论),你需要了解“转角频率”是什么,你需要了解如何将这些频率映射到你的样本(例如,你可以说你的样本每秒钟来一次 - 或者在任何其他费率,但这个选择会影响你想要的“转角频率”)。一旦你对“你需要的数字滤波器”有了解 - 找到系数非常简单,你可以在MatLab中使用,或者使用在线计算器,在Google中寻找“数字滤波器计算器”。