lms_adaptivefilter.m

来自「数字信号处理的专业书籍用于计算实例的matlab源程序」· M 代码 · 共 38 行

M
38
字号
clear;
cla;
N=500;
A=randn(1,N);                           %初始化
x=zeros(1,N);
y=zeros(1,N);
e=zeros(1,N);
%求出输入x(n)
x(1)=A(1);
x(2)=A(2)+1.6*A(1);
for i=3:N
    x(i)=A(i)+1.6*x(i-1)-0.8*x(i-2);    
end
d=x;                                    %期望响应d(n)=x(n)
w=zeros(2,N);                           %权矢量w(n)初始化
mu=0.002;                               %步长因子mu
for n=3:N-1                             %LMS算法
    xl=x(n-1:-1:n-2);
    y(n)=w(:,n)'*xl';
    e(n)=d(n)-y(n);
    w(:,n+1)=w(:,n)+2*mu*e(n)*xl';     
end
%画出LMS算法权矢量过渡过程的图形
a1=-w(1,:);
a2=-w(2,:);
plot(a1,'r');
hold on;
plot(a2);
legend('a1(n)','a2(n)');
for j=1:N
    c(j)=-1.6;
    d(j)=0.8;
end
plot(c,'r:');
plot(d,'k:');
title('LMS算法自适应系数a1(n)和a2(n)的过渡过程');
hold off;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?