为什么我的低通滤波器会放大我的信号?

时间:2013-08-15 00:31:43

标签: matlab filtering signal-processing lowpass-filter

我是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-折。通过应用具有这些值的过滤器,我到底做了什么?

1 个答案:

答案 0 :(得分:5)

如果您想使用matlab设计filters,可以先从文档中阅读它们,例如here。如果您想要实现它,那么您可以使用fvtool实用程序来研究不同参数的效果。但是,与大多数工具一样,如果您花几分钟阅读用户手册,则更有可能从中获取一些东西。对于初学者,您需要了解设置频率截止的位置。

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

enter image description here

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

enter image description here

最后,以下显示了过滤前后频域的数据。由于滤波器,信号下降超过2.5 Hz是显而易见的。对所选FIR滤波器的响应不像IIR滤波器那样平滑,并且会产生波纹,但是具有更突然的衰减,比较低频率的信号衰减高频信号。

enter image description here