C++ FOR噪声滤波器
C++ FIR noise filter
我正在挖掘一些关于在 C++ 中从我的 IQ 数据样本中过滤噪音的信息。
我了解到这可以通过使用一个简单的过滤器来完成,该过滤器计算最后几个数据样本的平均值并将其应用于当前样本。
您对这种过滤有更多的经验吗?或者您是否推荐使用一些现有的 FIR 过滤库?
感谢您的评论!
不幸的是,它并不像"just get some library and it will do all the work for you"那么简单;数字滤波器是一个相当复杂的课题。
仅当您的测量值以固定时间间隔(在数字滤波器中称为 "sample rate")时,才可以轻松地将数字滤波器应用于您的数据。否则(如果时间间隔不同),应用数字滤波器并不是微不足道的(我怀疑你可能需要 FFT 来做,但我在这里可能是错的)。
数字滤波器(IIR 和 FIR)的有趣之处在于,一旦您知道了系数,您实际上并不需要一个库,您自己编写它很容易(参见,例如,第一张图在这里:https://en.wikipedia.org/wiki/Finite_impulse_response:看起来很简单,对吧?);它正在寻找棘手的系数。
作为找出系数的先决条件,你需要了解很多关于滤波器的知识:你需要知道你需要什么样的滤波器(如果是在解调之后 - 你可能需要低通,否则请参阅下面 MSalters 的评论),您需要了解 "corner frequency" 是什么,并且您需要了解如何将这些频率映射到您的样本(例如,您可以说您的样本来一次每秒 - 或任何其他速率,但此选择会影响您想要的 "corner frequency")。一旦您了解了 "what you need in terms of digital filters" - 查找系数非常容易,您可以在 MatLab 中完成,或者使用在线计算器,在 Google 中查找 "digital filter calculator"。
我正在挖掘一些关于在 C++ 中从我的 IQ 数据样本中过滤噪音的信息。
我了解到这可以通过使用一个简单的过滤器来完成,该过滤器计算最后几个数据样本的平均值并将其应用于当前样本。
您对这种过滤有更多的经验吗?或者您是否推荐使用一些现有的 FIR 过滤库?
感谢您的评论!
不幸的是,它并不像"just get some library and it will do all the work for you"那么简单;数字滤波器是一个相当复杂的课题。
仅当您的测量值以固定时间间隔(在数字滤波器中称为 "sample rate")时,才可以轻松地将数字滤波器应用于您的数据。否则(如果时间间隔不同),应用数字滤波器并不是微不足道的(我怀疑你可能需要 FFT 来做,但我在这里可能是错的)。
数字滤波器(IIR 和 FIR)的有趣之处在于,一旦您知道了系数,您实际上并不需要一个库,您自己编写它很容易(参见,例如,第一张图在这里:https://en.wikipedia.org/wiki/Finite_impulse_response:看起来很简单,对吧?);它正在寻找棘手的系数。
作为找出系数的先决条件,你需要了解很多关于滤波器的知识:你需要知道你需要什么样的滤波器(如果是在解调之后 - 你可能需要低通,否则请参阅下面 MSalters 的评论),您需要了解 "corner frequency" 是什么,并且您需要了解如何将这些频率映射到您的样本(例如,您可以说您的样本来一次每秒 - 或任何其他速率,但此选择会影响您想要的 "corner frequency")。一旦您了解了 "what you need in terms of digital filters" - 查找系数非常容易,您可以在 MatLab 中完成,或者使用在线计算器,在 Google 中查找 "digital filter calculator"。