【问题标题】:Why is my low pass filter magnifying my signal?为什么我的低通滤波器放大了我的信号?
【发布时间】:2013-08-17 03:51:56
【问题描述】:

我是 MATLAB 和信号分析的完全初学者,所以我并不真正了解信号滤波背后的傅立叶数学。我带着我的 Ipod Touch 并使用了一个将加速度计数据(以 50Hz 采样率)记录到 CSV 的应用程序,并将该 CSV 数据加载到 matlab 中。我现在正在尝试对信号应用低通滤波器,以消除加速度小变化时产生的噪声(所以我只剩下加速度的大信号)。

我今天在 matlab 中阅读了一堆关于信号过滤的信息,并且我拥有信号处理工具箱,但我仍然对某些变量的含义感到非常困惑。例如函数filter(b,a,data)不断出现,我知道ab是系数向量,但我不知道这些如何影响滤波器或如何根据我对信号的了解创建这些值/我想用它做什么。

如果我没有很强的傅里叶分析背景,我应该去哪里学习信号处理的基础知识?我应该如何在matlab中创建我的低通滤波器?谢谢!

Here is the sample data I am working with.

我尝试根据 matlab 中有关低通滤波器的其他一些 stackexchange 帖子制作 a=[1 -0.9] b=1 ,它似乎做了一些事情,但它似乎也将我的信号放大了 3 倍。通过应用具有这些值的过滤器,我到底做了什么?

【问题讨论】:

  • 你所做的代码示例会有用。
  • 就是这样。我现在一直在做 filtfilt(b,a,data) 或 filter(b,a,data) 之类的事情,其中​​数据是数据的向量。我真的不知道这会如何改变过滤器或者是什么使它低/高通。
  • 您可以检查如何创建例如高斯滤波器here。也许这会有所帮助。

标签: matlab filtering signal-processing lowpass-filter


【解决方案1】:

如果你想用 matlab 设计filters,你可以从阅读文档开始,例如here。如果您只想使用它,那么您可以使用fvtool 实用程序研究不同参数的效果。然而,像大多数工具一样,如果您花几分钟阅读用户手册,您更有可能从中得到一些东西。对于初学者,您需要了解在何处设置截止频率。

下图显示了 3 种不同滤波器的频率响应。左侧面板是您的滤波器的响应,并突出显示了您观察到放大的原因:低频信号按约 10 倍缩放。您使用的滤波器是带反馈的 IIR 型。中间面板显示了一个类似的过滤器,其中b 的选择更合理。使用fir1 生成了一个可能适合您需要的更简单的 FIR 滤波器,如右图所示。 IIR 滤波器的缺点是它不能对所有频率表现出统一的群延迟响应,这对于您的特定应用来说可能是不可取的。

下图显示了使用 IIR 和 FIR 滤波器获得的原始数据和滤波数据:

最后,下图显示了您在过滤前后的频域数据。由于滤波器,信号在 2.5 Hz 以上的下降是显而易见的。对所选 FIR 滤波器的响应不如 IIR 滤波器那么平滑,会产生纹波,但衰减更突然,高频信号比低频信号衰减更多。

【讨论】:

  • 感谢您写得很好的回复!在发布之前,我确实看过该一维过滤器页面,但它并没有真正解释清楚 a 和 b 是什么以及它们如何影响数据。例如,为什么当 b 为 1 时低频放大 10,但当它为 0.1 时,它们不是(而是高频被去放大)?此外,FIR 中的数字是什么以及它们是如何使用的。我想我只需要一本关于数字信号处理和滤波器的好介绍书……
  • 一个开始的地方是将方程中的 a 和 b 的值替换为文档中提供的过滤器的效果,即 a(1)*y(n) = b (1)*x(n) + b(2)*x(n-1) + ... 。写出 y(1)、y(2) 等的表达式,感受一下 a,b 的作用
猜你喜欢
  • 1970-01-01
  • 2011-10-26
  • 2010-09-07
  • 2023-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
相关资源
最近更新 更多