📄 mylms_lsl.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%RLS与LMS权系数a1(n)的比较%%%%%%%%%%%%%%%%
%初始化内存空间
clear;
clf;
clc;
%初始化参数
mu=0.002;
M=3;
deta=2;
%待仿真的权系数
a1=1.558;
a2=-0.81;
% 设定时间序列点数
N=950;
% 产生随机信号
Nsignal=randn(N,1);
%begin of algorithm
%LMS实现算法
d= filter([1 a1 a2],[1 0 0],Nsignal);
%初始化权矢量
LMSw = zeros(3,1) ;
for n =3 : N
u= Nsignal(n:-1:n-3+1) ;
yl(n)= LMSw' * u;
el(n) = d(n) - yl(n) ;
LMSw = LMSw + 2*mu * u * el(n) ;
LMSa1(n)=LMSw(2);
LMSa2(n)=LMSw(3);
end
figure
hold on %锁定图像
%输出LMS的仿真波形
plot(LMSa1,'b')
plot(LMSa2,'b')
% LSL实现算法
x=filter(1,[1 -a1 -a2],Nsignal);%二阶自回归信号模型
%初始化相关的参量
Deta(1:M,1)=1;
sef(1:M,1)=3;
seb(1:M,1)=3;
gama(1:M,1)=1.0;
%实现算法
for m=1:M-1
for n = 2 : N
eb(1,n)=x(n);
ef(1,n)=x(n);
seb(1,n)=sef(1,n-1)+x(n)*x(n);
sef(1,n)=sef(1,n-1)+x(n)*x(n);
gama(1,n)=1;
Deta(m+1,n)=Deta(m+1,n-1)+eb(m,n-1)*ef(m,n)/gama(m,n-1);
ef(m+1,n)=ef(m,n)-Deta(m+1,n)*eb(m,n-1)/seb(m,n-1);
eb(m+1,n)=eb(m,n-1)-Deta(m+1,n)*ef(m,n)/sef(m,n);
sef(m+1,n)=sef(m,n)-Deta(m+1,n)*Deta(m+1,n)/seb(m,n-1);
seb(m+1,n)=seb(m,n-1)-Deta(m+1,n)*Deta(m+1,n)/seb(m,n);
gama(m+1,n-1)=gama(m,n-1)-eb(m,n-1)*eb(m,n-1)/seb(m,n-1);
kf(m+1,n)=Deta(m+1,n)/sef(m,n);
kb(m+1,n)=Deta(m+1,n)/seb(m,n-1);
end
end
kb(:,1)=0;%初始kb,kf的值都是0,根据递推关系可以算出
kf(:,1)=0;
for n=1:N
a1n(n)=kb(2,n)-kf(2,n)*kb(3,n);
a2n(n)=kb(3,n);
end
plot(a1n,'g')
plot(a2n,'r')
title('LSL 与 LMS 性能参数比较')
xlabel('n')
hold off
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -