📄 nmls.m
字号:
%lms
clear all
close all
hold off
sysorder=5;
N=1000;
inp=randn(N,1);
n=randn(N,1);
[b,a]=butter(2,0.25);
Gz=tf(b,a,-1);
h=[0.0976;0.2873;0.3360;0.2210;0.0964;];
y=lsim(Gz,inp);
n=n*std(y)/(10*std(n));
d=y+n;
totallength=size(d,1);
N=60;
w=zeros(sysorder,1);
for n=sysorder:N
u=inp(n:-1:n-sysorder+1);
y(n)=w'*u;
r(n)=u'*u;
e(n)=d(n)-y(n);
fai=0.0001;
if n<20
mu=0.32;
else
mu=0.15;
end
w=w+mu*u*e(n)/(r(n)+fai);
end
for n=N+1:totallength
u=inp(n:-1:n-sysorder+1);
y(n)=w'*u;
e(n)=d(n)-y(n);
end
hold on
plot(d)
plot(y,'r');
title('系统输出');
xlabel('样本')
ylabel('实际输出')
figure
semilogy((abs(e)));
title('误差曲线');
xlabel('样本')
ylabel('误差矢量')
figure
plot(h,'k+')
hold
plot(w,'r*')
legend('实际权矢量','估计权矢量')
title('比较实际和估计权矢量');
axis([0 6 0.05 0.35])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -