⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lmsandrls.m

📁 现代信号处理中的LMS算法和RLS算法的MATLAB仿真
💻 M
字号:

clc;
clear;
close all;
nx=randn(1,500);
b=[1 -1.6 0.8];
a=1;
e=3;
f=[1 2 1];
x=filter(f,e,nx);
d=filter(b,a,x);
n=1:length(d);
% LMS
miu=0.02;
w=zeros(3,500);
e(1)=0;
e(2)=0;
y(1:3)=0;
for n=3:500;
    e(n)=d(n)-[x(n) x(n-1) x(n-2)]*w(:,n);
    w(:,n+1)=w(:,n)+2*miu*e(n).*[x(n) x(n-1) x(n-2)]';
    y(n+1)=[x(n) x(n-1) x(n-2)]*w(:,n+1);
end
figure(1)
subplot(2,1,1)
plot(abs(e))
title('LMS的输出误差曲线')
xlabel('迭代次数(n)')
ylabel('误差幅值')
% RLS
lamda=5;
x=x';
ww=zeros(3,500);
T=10*eye(3);
for i=3:500;
    xx=x(i:-1:i-3+1);
    enn(i)=d(i)-ww(:,i)'*xx;
    k=T*xx/(lamda+xx'*T*xx);
    T=(T-(T*xx*xx'*T)/(lamda+xx'*T*xx));
    ww(:,i+1)=ww(:,i)+k*enn(i);
end
subplot(2,1,2)
plot(abs(enn))
title('RLS的输出误差曲线')
xlabel('迭代次数(n)')
ylabel('误差幅值')
figure(2)
subplot(3,1,1)
plot(0:500,w(1,:),'r',0:500,ww(1,:),'b');
title('LMS和RLS的权值收敛情况')
legend('LMS','RLS',4);
xlabel('迭代次数(n)');
ylabel('权值幅值')
subplot(3,1,2)
plot(0:500,w(2,:),'r',0:500,ww(2,:),'b');
legend('LMS','RLS');
xlabel('迭代次数(n)')
ylabel('权值幅值')
subplot(3,1,3)
plot(0:500,w(3,:),'r',0:500,ww(3,:),'b');
legend('LMS','RLS',4);
xlabel('迭代次数(n)')
ylabel('权值幅度')

⌨️ 快捷键说明

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