低通滤波器的过滤函数

3
我一直在搜索,但似乎无法理解这个2009年在这里提供的示例。 我正在尝试在Matlab中对一组数据实现简单的低通滤波器,并且这是我在SO上被引用的示例。 链接到示例
xfilt = filter(a, [1 a-1], x);

a = T/τT为采样时间间隔,τ代表滤波器时间常数。

现在,系数是我最困扰的部分。基于一阶拉普拉斯变换函数如下:

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

很好知道如何找到上述函数的分母系数。

1个回答

2
根据 filter 文档,第一个参数是有理传递函数的分子系数,我们把它们叫做[b0 b1 b2 ...],第二个参数是有理传递函数的分母系数,我们把它们叫做[a0 a1 a2]

既然你想要一个单极低通滤波器,时域方程式为:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接