为什么对自适应 AR NLMS 滤波器进行过度建模可以修复尖锐的尖峰?

信息处理 自适应滤波器 自回归模型
2022-01-08 10:53:52

我刚刚模拟了一个由白噪声驱动的自回归二阶模型,并使用 1-4 阶的归一化最小均方滤波器估计了参数。

由于一阶滤波器对系统进行欠建模,因此估计当然很奇怪。二阶滤波器找到了很好的估计,尽管它有几个急剧的跳跃。从 NLMS 过滤器的性质来看,这是可以预料的。

让我感到困惑的是三阶和四阶滤波器。它们似乎消除了急剧的跳跃,如下图所示。我看不出他们会添加什么,因为二阶滤波器足以对系统进行建模。无论如何附近徘徊。0

有人可以定性地为我解释这种现象吗?是什么原因造成的,它是否可取?

我使用了步长样本和 AR 模型其中是白色的方差为 1 的噪声。μ=0.01104x(t)=e(t)0.9x(t1)0.2x(t2)e(t)

在此处输入图像描述

MATLAB代码,供参考:

% ar_nlms.m
function th=ar_nlms(y,order,mu)
N=length(y);
th=zeros(order,N); % estimated parameters
for t=na+1:N
    phi = -y( t-1:-1:t-na, : );
    residue = phi*( y(t)-phi'*th(:,t-1) );
    th(:,t) = th(:,t-1) + (mu/(phi'*phi+eps)) * residue;
end

% main.m
y = filter( [1], [1 0.9 0.2], randn(1,10000) )';
plot( ar_nlms( y, 2, 0.01 )' );
1个回答

似乎正在发生的是,当您开始过度建模时,错误信号变得越来越少。

我修改了您的代码以返回错误信号(residue术语的一部分)。

xcorr该图显示了阶数 = 2(蓝色)、3(红色)和 4(绿色)的误差的非零滞后系数。如您所见,接近但非零的滞后项的幅度越来越大。

如果我们查看误差的 FFT(频谱)xcorr,我们会看到低频项(导致大漂移)越来越小(误差包含更多高频)。

因此,在这种情况下,过度建模的效果似乎是对错误进行高通滤波,这(对于本示例)是有益的。

在此处输入图像描述

在此处输入图像描述

function [th,err]=ar_nlms(y,order,mu)
eps = 0.000000001;
N=length(y);
th=zeros(order,N); // estimated parameters
err = zeros(1,N);
for t=order+1:N
    phi = -y( t-1:-1:t-order, : );
    err(t) = y(t)-phi'*th(:,t-1);
    residue = phi*( err(t) );
    th(:,t) = th(:,t-1) + (mu/(phi'*phi+eps)) * residue;
    size(residue)
end