学习使用最小均方 (LMS) 滤波器进行信号预测的自回归 (AR) 模型的系数

信息处理 自适应滤波器 脑电图 最小二乘 自回归模型 线性预测
2022-02-10 10:21:59

我想做两件事。

  1. 使用 LMS 估计 AR 模型的系数
  2. 使用在步骤 1 中找到的系数并使用 AR 方程预测信号的未来样本。我没有想要的信号,所以我也不能使用未来的样本。

自回归模型的方程为

x(n)=i=1paix(ni)+e(n)

在哪里p表示 AR 模型顺序 (p=30在我的情况下)和a显示 AR 系数{a1,a2,a3,a4,,a30}.

最小均方(LMS)算法如下:

Order=30;      % AR model order 
M=30;           % No of filter coefficients same as AR model order
mu=0.001;      % Learning rate/ step size
x=signal(1,1:700);  % length of signal is 700 samples, x= input signal
N=length(x); 
Predicted_signal=zeros(1,N);
w=zeros(1,M);               % weights / filter coefficients
for n=M:N
    pp=n-M+1;
    x1=x(n:-1:pp); 
    Predicted_signal(n)=(w*x1'); 
    e(n)=x(n)-Predicted_signal(n);     %e(n)=d(n)-y(n); reference signal - actual signal
    w=w+2*mu*e(n)*x1;
    w1(n-M+1,:)=w(1,:);      % filter coefficients
end 

在先前代码中找到的系数(权重/ w)将用于 AR 方程。

ts = 第 436 个样本的预测起点

Predicted_signal_ar= orignal_signal(1,1:436);
for i=1:Order
    t=ts-i;
    prediction1(1,i)=(w(1,i)*Predicted_signal_ar(t)); %% putting lms coefficients in AR equation
end

s1(1,a)=sum(prediction1(1,:));
Predicted_signal_ar(1,ts)=s1(1,a); 

我的代码中有一些错误,我不确定它是什么。上面的代码应该让我接近实际的系数,然后我将其传递到第 2 步进行 AR 预测。在第二步的结果中,前几个点的预测突然跳跃,预测性能也很差。

在此处输入图像描述

1个回答

为了使用 LMS 来学习 AR 模型,应该使用最小均方 (LMS) 滤波器的预测变量。

基本上我们预测x[n]使用过去样本的样本:{x[ni]}i=1k在哪里k是 LMS 过滤器阶数。

这基本上将为我们提供我们将驱动到 LMS 滤波器的任何信号的 AR 模型。

我没有你的样本,所以我使用30具有不同幅度、频率和相位的正弦信号的线性组合创建了一个类似的信号:

在此处输入图像描述

我使用了 75% 的信号用于 LMS 训练(蓝色),其余的则不被 LMS 看到。

预测是:

在此处输入图像描述

虽然输入信号不是由 AR 模型生成的,但使用顺序模型101的结果似乎相当不错。
当模型顺序调整得更好时,结果可能会变得更好。

该代码可在我的StackExchange Codes Signal Processing Q59325 GitHub 存储库中找到(查看SignalProcessing\Q59325文件夹)。