⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lsl_lms_mb.m

📁 自适应滤波器设计的方法用于信号处理的具体应用。可以实现信号的自适应处理
💻 M
字号:
clear;
N=200;
order=2;
M=order+1;
t=1;                                %t=δ
%n=1时刻的初始化
A=randn(1,N);                       %噪声                           
x=zeros(1,N);                       %输入
y=zeros(1,N);                       %输出
e=zeros(1,N);
error=zeros(1,N);                   %误差
eb=zeros(M,N);                      %后向预测误差
ef=zeros(M,N);                      %前向预测误差
delta=zeros(M,N);                   %△
gama=ones(M,N);                     %角参量
Ef=t*ones(M,N);                     %前向剩余误差
Eb=t*ones(M,N);                     %后向剩余误差
kf=zeros(M-1,N);                    %前向反射系数
kb=zeros(M-1,N);                    %后向反射系数
a=zeros(M-1,N);                     %权矢量系数
%求出输入x(n)
x(1)=A(1);
x(2)=A(2)+1.558*A(1);
for i=3:N
    x(i)=A(i)+1.558*x(i-1)-0.81*x(i-2);    
end
z1=ones(1,N)*1.58;
z2=ones(1,N)*(-0.81);
%m=1的初始化
eb(1,:)=x;
ef(1,:)=x;
for j=2:N
    Eb(1,j)=Ef(1,j-1)+x(j)*x(j);
    Ef(1,j)=Ef(1,j-1)+x(j)*x(j);
end
gama(1,:)=ones(1,N);
%LSL算法
for m=1:(M-1)
    for n=2:N
        delta(m+1,n)=delta(m+1,n-1)+eb(m,n-1)*ef(m,n)/gama(m,n-1);
        ef(m+1,n)=ef(m,n)-delta(m+1,n)*eb(m,n-1)/Eb(m,n-1);
        eb(m+1,n)=eb(m,n-1)-delta(m+1,n)*ef(m,n)/Ef(m,n);
        Ef(m+1,n)=Ef(m,n)-delta(m+1,n)^2/Eb(m,n-1);
        Eb(m+1,n)=Eb(m,n-1)-delta(m+1,n)^2/Ef(m,n);
        gama(m+1,n-1)=gama(m,n-1)-eb(m,n-1)^2/Eb(m,n-1);
        kf(m,n)=delta(m+1,n)/Ef(m,n);
        kb(m,n)=delta(m+1,n)/Eb(m,n-1);
    end
end
%求全矢量系数
for z=1:N
    a(1,z)=kb(1,z)-kf(1,z)*kb(2,z);
    a(2,z)=kb(2,z);
end
%求出y(n)和d(n)
for n=M:(N-1)
    xl=x(n-1:-1:n-M+1);
    y(n)=a(:,n)'*xl';
    error(n)=x(n)-y(n);   
end
%画出LSL算法权矢量过渡过程的图形
a1=a(1,:);
a2=a(2,:);
subplot(1,2,1);
plot(a1,'g');
hold on;
subplot(1,2,2);
plot(a2,'g');
hold on;

x(1)=A(1);
x(2)=A(2)+1.558*A(1);
for i=3:N
    x(i)=A(i)+1.558*x(i-1)-0.81*x(i-2);    
end

d=x;                                    %期望响应d(n)=x(n)
w=zeros(2,N);                           %权矢量w(n)初始化
mu=0.005;                               %步长因子mu
for n=3:N-1                             %LMS算法
    xl=x(n-1:-1:n-2);
    y(n)=w(:,n)'*xl';
    e(n)=d(n)-y(n);
    w(:,n+1)=w(:,n)+2*mu*e(n)*xl';     
end
%画出LMS算法权矢量过渡过程的图形
a1=w(1,:);
a2=w(2,:);
subplot(1,2,1);
plot(a1,'b');
legend('LSL算法','LMS算法');
plot(z1,'r:');
title('a1(n)的过渡过程');
subplot(1,2,2);
plot(a2,'b');
legend('LSL算法','LMS算法');
plot(z2,'r:');
title('a2(n)的过渡过程');
hold off;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -