文档库 最新最全的文档下载
当前位置:文档库 › RLS算法

RLS算法

RLS算法
RLS算法

RLS算法程序

clc;

hold on;

%-----------------设置参数---------------------- C=10;

a=1;

pv=a^2/3;

px=11*pv;

sigma_v2=1e-3;

L=800;

M=50;

mu=1/(10*px*L);

A=3;

omega=pi/3;

lambda=0.995;

%---------------RLS---------------------

ac_learn_curve=zeros(L,1);

for c=1:C

v=zeros(L,1);

v=2*(rand(L,1)-0.5);

s=zeros(L,1);

for l=1:L

s(l)=A*sin(omega*l);

end

x=s+v;

x1=zeros(L,1);

for l=1:L

if l==1

x1(l)=x(l);

else

x1(l)=x(l-1);

end

end

u_=zeros(M,1);

e=zeros(L,1);

y=zeros(L,1);

r=eye(M);

w=zeros(M,1);

NMSD=zeros(L,1);

for l=1:L

u_=[x1(l);u_(1:M-1)];

y(l)=u_'*w;

e(l)=x(l)-y(l);

r=1/lambda*(r-(r*u_*u_'*r)/(lambda+u_'*r*u_));

w=w+r*u_*e(l);

NMSD(l)=e(l)^2;

end

ac_learn_curve=ac_learn_curve+NMSD;

end

learn_curve=ac_learn_curve./C;

%---------------------Part 3----------------

figure(1);

subplot(411);plot(v);title('噪声信号v(n)');

axis([0 500 -5 5]);

subplot(412);plot(s);title('正弦信号s(n)');

axis([0 500 -5 5]);

subplot(413);plot(x);title('输入信号x(n)=v(n)+s(n)');

axis([0 500 -5 5]);

subplot(414);plot(e);title('输出信号e(n)');

axis([0 500 -5 5]);

figure(3);

B=[1 -w'];

freqz(B);

figure(4);

plot((learn_curve),'b');

xlabel('\fontsize{8}\rmIteration Number')

ylabel('\fontsize{8}\rmSquare error ')

相关文档