|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我现在在做一个课程设计,是利用MATLAB实现LSL自适应滤波器,请教各位高手有没有此方面的源程序可供参考。
或帮我修改以下关于实现LSL滤波器的程序!!!
谢谢各位大侠!!
N=100;
n=10;
k=12;
b=0.8*randn(1,N);
for i=3:N
xr(1,i)=sin(k*2*pi*i/N);
x(1,i)=xr(1,i-1)+xr(1,i-2)+b(i);
end
e1=zeros(N,n);
e2=zeros(N,n);
q1=zeros(N,n);
q2=zeros(N,n);
v=zeros(N,n);
r=zeros(N,n);
k1=zeros(N,n);
k2=zeros(N,n);
a1=zeros(1,N);
a2=zeros(1,N);
for i=1:n,
e2(1,n)=0;
v(1,n)=0;
r(1,n)=1;
q1(1,n)=0.5;
q2(1,n)=0.5;
end
for i=2:N,
e1(i-1,1)=xr(1,i-1);
e2(i-1,1)=xr(1,i-1);
q1(i,1)=q1(i-1,1)+xr(1,i)*xr(1,i)
q2(i,1)=q1(i-1,1)+xr(1,i)*xr(1,i);
r(i,1)=1;
v(i,1)=1;
end
for i=2:N
for j=1:n
v(i,j+1)=v(i,j-1)+e2(i-1,j)*e1(i,j)/r(i-1,j);
e1(i,j+1)=e1(i,j)-v(i,j+1)*e2(i-1,j)/q2(i,j);
e2(i,j+1)=e2(i-1,j)-v(i,j+1)*e1(i,j)/q1(i,j);
q1(i,j+1)=q1(i,j)-v(i,j+1)*v(i,j+1)/q2(i-1,j);
q2(i,j+1)=q2(i-1,j)-v(i,j+1)*v(i,j+1)/q1(i,j);
r(i-1,j+1)=r(i-1,j)-e2(i-1,j)*e2(i-1,j)/q2(i-1,j);
k1(i,j+1)=v(i,j+1)/q1(i,j);
k2(i,j+1)=v(i,j+1)/q2(i-1,j);
end
end
for i=1:N
a1(1,i)=k2(i,1)-k1(i,1)*k2(i,2)
a2(1,i)=k2(i,2);
end
figure(1)
plot(0:N-n,x(1,n:N)),grid
title('x(k) input signal in V ')
xlabel('Samples')
figure(2)
plot(0:N-n,xr(1,n:N),'r')
grid
axis([0 80 -1.2 1.2])
title('xr(k) reference signal in V')
xlabel('Samples')
figure(3)
plot(0:N-n,a1(1,n:N)),hold on
plot(0:N-n,a2(1,n:N),'r'),hold off
grid
axis([0 80 -1.2 2])
title('a1(k) and a2(k) ')
xlabel('Samples')
|
|