哪位大侠帮我看下,这个LMS算法仿真程序怎么改?
目的是作出系数w1,w2的图形a1=-0.195;a2=0.95;u=0.02;p=-23.54;
v=wgn(1,100,p);
x(1)=v(1);
x(2)=v(2)-a1*x(1);
e(2)=x(2);
w1(1)=0;w2(1)=0;
w1(2)=0;w2(2)=0;
w1(3)=u*x(1)*e(2);
w2(3)=0;
n=3:100;
w1(n+1)=w1(n)+ u*x(n-1)*e(n);
w2(n+1)=w2(n)+ u*x(n-2)*e(n);
x(n)=v(n)-a1*x(n-1)-a2*x(n-2);
e(n)=x(n)-w1(n)*x(n-1)-w2(n)*x(n-2);
n=1:100;
plot(n,w1(n),n,w2(n));??? Index exceeds matrix dimensions.Error in ==> D:\EDA\Matlab6.5\work\ASP.m
On line 11 ==> w1(n)=w1(n-1)+ u*x(n-2)*e(n-1); n=3:100;
w1(n+1)=w1(n)+ u*x(n-1)*e(n);
w2(n+1)=w2(n)+ u*x(n-2)*e(n);
x(n)=v(n)-a1*x(n-1)-a2*x(n-2);
e(n)=x(n)-w1(n)*x(n-1)-w2(n)*x(n-2);
红色标记部分要用循环实现
另外你这里e只有两个元素,第一次循环的时候就要用到e(3)
明显不合理 谢谢你的回复,我昨天对程序进行了修改,改成100次计算的平均,结果波形不平坦,和理论计算波形差别很大,单次计算的波形又不正确,还望高手出手相助啊!!
a1=-0.195;a2=0.95;p=-10.22;%功率是-10.22dbw
x=zeros(1,10000);
w1=zeros(1,10000);
w2=zeros(1,10000);
a=zeros(1,100);
b=zeros(1,100);
v=wgn(1,1000,p);
x(1)=v(1);
x(2)=v(2)-a1*x(1);
e(1)=x(1);
e(2)=x(2);
w1(1)=0;w2(1)=0;
w1(2)=0;w2(2)=0;
w1(3)=0.02*x(1)*e(2);
w2(3)=0;
for n=3:1000;
for m=1:100;
e(n)=x(n)-w1(n)*x(n-1)-w2(n)*x(n-2);
w1(n+1)=w1(n)+ 0.02*x(n-1)*e(n);
w2(n+1)=w2(n)+ 0.02*x(n-2)*e(n);
x(n)=v(n)-a1*x(n-1)-a2*x(n-2);
a(m)=w1(n);
b(m)=w2(n);
end;
for i=1:100;
w1(n)=w1(n)+a(i);
w2(n)=w2(n)+b(i);
end
w1(n)=w1(n)/100;
w2(n)=w2(n)/100;
end
n=1:1000;
plot(n,w1(n),'r',n,w2(n),'b'); http://forum.vibunion.com/thread-8364-1-1.html 呵呵,我也是做自适应算法的。 QQ 287642862
页:
[1]