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

📄 myrls.m

📁 自适应滤波器rls的MATLAB算法的实现
💻 M
字号:
function myRLS
f1=300; f2=1000; fs=8000; N=600; t0=0.02;
for n=1:N
    x(n)=6*sin(2*pi*f1/fs*n);
    s(n)=sin(2*pi*f2/fs*n);
end
a=1;x=x';s=s';
order=fix(t0*fs);
d=0.8*x;
y=d+s; e0=zeros(N,1); e=zeros(N,1); w=zeros(order,1); ryx=zeros(N,1);
z=10; p=z*eye(order,order);rxx=zeros(N,order); g=zeros(order,1);
for n=2:N
    ryx(n)=((n-1)/n)*ryx(n-1)+(1/n)*y(n)*x(n); 
end
for i=1:order
    for n=(i+1):N
        rxx(n,i)=((n-1)/n)*rxx(n-1,i)+(1/n)*x(n)*x(n-i);
    end
end   
xii=x(order+1-(order:-1:1));%1~order
R=xii'*xii;
for i=(order+2):N  %
    xii=x(i-(order:-1:1));%i-order~i-1   2~order+1   3~order+2
    R=R+xii'*xii;
end
R=R/(N-order);
u0=max(eig(R));    
u=0.99*(1/u0);
e2=zeros(N,1); w2=zeros(order,1); y2=zeros(order,1);d2=y;
for n=(order+1):N
    x1=x(n:-1:n-order+1);
    r=rxx(n,:)';            %order*1
    g=(p*r)/(a+r'*p*r);     %order*1
    e0(n)=ryx(n)-r'*w;
    w=w+g*e0(n);             %order*1
    p=(1/a)*(p-g*r'*p);  
    qq(n)=w'*x1;
    e(n)=y(n)-qq(n-1);  
    
    
    x2=x1';
    y2(n)=x2*w2;
    e2(n)=d2(n)-y2(n);
    w2=w2+u*x2'*e2(n);
end
plot(e);
figure;
plot(e2);




⌨️ 快捷键说明

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