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

📄 weinafilter_2.m

📁 维纳滤波器在matlab中实现的源程序,,
💻 M
字号:
%自适应滤波器

clear;

v=1;               %信号方差
l=100;             %样本个数
u=0.1;            %步长
hi=-0.8;           %hi
h=zeros(l,1);
h(1)=0;            %h(0)
mp=0;              %平均超调量
ct=1;              %统计次数

for count=1:ct
    x=randn(1,l);
    meanx=sum(x)/l;
    covx=sum((x-meanx)*(x-meanx)')/l;
    x=0.5*(x-meanx)/sqrt(covx);
    w=randn(1,l);
    meanw=sum(w)/l;
    covw=sum((w-meanw)*(w-meanw)')/l;
    w=sqrt(v)*(w-meanw)/sqrt(covw);
    
    s=hi*x;
    y=s+w;
    
    t=0:1:l-1;
    %plot(t,s,t,y);
    
    cstep=l;   %converge step
    r=x*x'/l;
    for i=2:l
        h(i)=hi+((1-2*u*r)^(i-1))*(h(1)-hi);     %理论
        if abs((h(i)-hi)/hi)<=0.05 cstep=i;break,end %收敛速度
    end
    
    for i=cstep+1:l
        h(i)=hi+((1-2*u*r)^(i-1))*(h(1)-hi);    %理论
    end
    
    hm=zeros(1,l);
    sm=zeros(1,l);
    hm(1)=h(1);    
    em=0;
    
    for i=1:l-1
        sm(i)=hm(i)*x(i);
        hm(i+1)=hm(i)+2*u*(y(i)-hm(i)*x(i))*x(i);
        if i>=cstep em=em+(y(i)-sm(i))^2;end
    end
    
    sm(l)=hm(l)*x(l);
    em=em/(l-1-cstep);
    m=(em-v)/v;
    mp=mp+m;
end
mp=mp/ct


plot(t+1,h,':b',t+1,hm,'r');
legend('理论值','估计值',0);
title('h(n)的理论值和估计值');
xlabel('n');

figure;
plot(t+1,s,':b',t+1,sm,'r');
legend('s(n)','估计值',0);
title('s(n)及其估计值');
xlabel('n');

⌨️ 快捷键说明

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