我一直在搜索,但似乎无法理解2009年在此处提供的以下示例。
我正在尝试在Matlab中为一组数据实现一个简单的低通滤波器,这是在SO上引用的以下示例。 Link to example
xfilt = filter(a, [1 a-1], x);
其中a = T/τ
,T
=采样之间的时间,而τ
(tau)是过滤器时间常数。
现在,系数是给我最大的麻烦。基于以下一阶Laplace传递函数:
(1/Ts) / (1 + (1/Ts))
,其中(1/Ts) = a
很高兴知道如何找到上述函数的分母系数。
答案 0 :(得分:1)
根据filter
文档,第一个参数是有理传递函数的分子系数,我们称它们为[b0 b1 b2 ...]
,第二个参数是分母的分母系数有理传递函数,我们称它们为[a0 a1 a2]
。
由于需要单极点低通滤波器,因此时域方程为:
A0*y(n) = B0*x(n) - A1*y(n-1);
您可以简化上述公式,使a0 = 1;
,b0 = B0/A0
和a1 = 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
,分母系数为1
和b0-1
。因此,xfilt = filter(b0, [1 b0-1], x);
如果fc
是频率削减,而Fs
是频率采样b0 = 2*pi*fc/Fs
。