📄 rls_lms_cj.m
字号:
clear;
N=500;
A=randn(1,N);
x=zeros(1,N);
y=zeros(1,N);
e=zeros(1,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); %求出输入x(n)
end
z1=ones(1,N)*(-1.6);
z2=ones(1,N)*0.8;
d=x; %期望响应d(n)=x(n)
w=zeros(2,N); %权矢量w(n)初始化
lambda=1; %遗忘因子lambda
delta=10; %T(-1)=10
T=delta*eye(2,2)
for n=3:N %RLS算法
xl=x(n-1:-1:n-2);
pi=xl*T;
k=lambda+pi*xl'
K=pi'/k;
e1(n)=d(n)-w(:,n-1)'*xl';
w(:,n)=w(:,n-1)+K*e1(n);
pp=K*pi;
T=(T-pp)/lambda;
y(n)=w(:,n)'*xl';
e(n)=d(n)-y(n);
end
%画出RLS算法权矢量过渡过程的图形
a1=-w(1,:);
a2=-w(2,:);
plot(a1,'g');
hold on;
plot(a2,'b');
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,'y');
plot(a2,'k');
legend('RLS a1(n)','RLS a2(n)','LMS a1(n)','LMS a2(n)');
plot(z1,'r:');
plot(z2,'r:');
title('RLS和LMS算法比较');
hold off;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -