MATLAB 中的 IIR 自适应滤波器

信息处理 matlab 自适应滤波器 lms 维纳滤波器
2022-02-05 00:11:02

假设我有一个 IIR 滤波器,由

G0(z)=110.2z10.1z2

我想使用 LMS 算法来建模 FIR 滤波器G(z)有秩序的N=15这样它会自适应地达到G0(z)系数值

所以我们知道G0可以表示为:

num = 1;
den = [1; -0.2; -0.1];

我的问题是我不知道如何启动G(z)鉴于它的顺序是N=15.

是否有效说:

G(z) = zeros(N,1)??

因为我的困惑是,如果G0(z)只有3个系数,怎么会G(z)考虑到它有 15 个抽头,收敛到 3 个系数?

请给我一些明确的见解。先感谢您。

1个回答

自适应 FIR 滤波器是一种 FIR 滤波器,它使用某种自适应算法来改变滤波器权重并达到所需状态。在使用 LMS 算法的情况下,一般更新方程如下:

w(n+1)=w(n)+μe(n)x(n),

在哪里w(n),e(n)x(n)分别是滤波器权重、误差和抽头值nth样品和μ是适应步长。

这意味着,适应的结果N-tap 过滤器将是N其权重的新值。

在您的情况下,您可以制作 FIR 滤波器G(z)N=15尝试适应,使其脉冲响应接近 IIR 滤波器的脉冲响应G0(z). 它应该能够从零权重开始这样做。但是,收敛之后肯定还是会有误差的。

有关 LMS 算法的有用参考资料是 MH Hayes的Statistical Digital Signal Processing and Modeling中的第 9 章“自适应滤波”以及 Wikipedia 上的Least_mean_squares_filter条目。