📄 lms.m
字号:
clear all;
clc;
w0=1.2*pi;
N=200;
M=8;
n=1:N;
u=zeros(1,N+M);
delta=0.004;
lambda=1;
eLMS=zeros(1,199);
wLMS=zeros(8,200);
eRLS=zeros(1,199);
wRLS=zeros(8,200);
for k=1:100
v=sqrt(0.1)*randn(1,200);
u(n+M)=exp(j*pi*n-j*pi)+exp(j*w0*n-j*0.79*pi)+v(n);
u0=0.05;
u_=zeros(8,200);
w=zeros(8,200);
for m=1:199
ua(m)=w(:,m)'*u_(:,m);
e(m)=u(m+8)-ua(m);
u_(:,m+1)=[fliplr(u(1,m+1:m+8))].';
w(:,m+1)=w(:,m)+u0*u_(:,m)*conj(e(m));
end
eLMS=eLMS+abs(e).^2;
wLMS=wLMS+w;
w=zeros(8,200);
P=1/delta*eye(8);
for m=1:199
K=1/lambda*P*u_(:,m)/(1+1/lambda*u_(:,m)'*P*u_(:,m));
e(m)=u(m+8)-w(:,m)'*u_(:,m);
w(:,m+1)=w(:,m)+K*conj(e(m));
P=1/lambda*P-1/lambda*K*u_(:,m)'*P;
end
eRLS=eRLS+abs(e).^2;
wRLS=wRLS+w;
end
eLMS=eLMS/100;
wLMS=wLMS/100;
aLMS=-conj(wLMS(:,200));
eRLS=eRLS/100;
wRLS=wRLS/100;
aRLS=-conj(wRLS(:,200));
w=linspace(0,2*pi,1000);
for i=0:M;
h(:,i+1)=exp(-j*w*i);
end
PLMS=1./abs(h*[1;aLMS]).^2;
PRLS=1./abs(h*[1;aRLS]).^2;
figure(1);
plot(eLMS);
xlabel('迭代次数 n');
ylabel('J_{LMS}(n)');
figure(2);
plot(linspace(0,2*pi,1000),10*log10(PLMS));
xlabel('w');
ylabel('PLMS(dB)');
figure(3);
plot(eRLS);
xlabel('迭代次数 n');
ylabel('J_{RLS}(n)');
figure(4);
plot(linspace(0,2*pi,1000),10*log10(PRLS));
xlabel('w');
ylabel('PRLS(dB)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -