nmls.m

来自「这里的7个源代码都是关于自适应噪声滤除技术的」· M 代码 · 共 53 行

M
53
字号
%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 + =
减小字号Ctrl + -
显示快捷键?