带低通滤波器的滤波器功能



我一直在到处搜索,但我似乎无法理解2009年这里提供的以下示例。

我试图在Matlab中对一组数据实现一个简单的低通滤波器,这是我在SO上提到的下面的例子

xfilt = filter(a, [1 a-1], x);

其中a = T/τT=样本之间的时间,τ(tau(是滤波器时间常数。

现在,系数是给我带来最大麻烦的。基于一阶拉普拉斯传递函数如下:

(1/Ts) / (1 + (1/Ts)),其中(1/Ts) = a

如果知道上面函数的分母系数是如何找到的,那就太好了。

根据filter文档,第一个参数是有理传递函数的分子系数,我们称它们为[b0 b1 b2 ...],第二个参数是有理转移函数的分母系数

由于你想要一个单极低通滤波器,时域方程是:

A0*y(n) = B0*x(n) - A1*y(n-1);

您可以简化上述方程,使a0 = 1;b0 = B0/A0a1 = A1/A0;成为

y(n) = b0*x(n) - a1*y(n-1);

出于稳定性原因,如果您不想改变增益,您将修复b0 - a1 = 1;

y(n) = b0*x(n) - (b0-1)*y(n-1);

等价的传递函数是

H(z) = b0 / (1 + (b0-1)*z^-1);

因此分子系数为b0,分母系数为1b0-1。因此写入xfilt = filter(b0, [1 b0-1], x);

如果fc是频率切割并且Fs是频率采样,则b0 = 2*pi*fc/Fs

最新更新