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

📄 bianbuchanglms.m

📁 用matlab自编的的变步长LMS滤波的算法的程序
💻 M
字号:
% clear;
ts=cputime;
clc;

N=4000;
%待调制信号与噪声的产生
NN=128;
Fir=fir1(NN,0.999999);

Nd1=8;
sum=zeros(1,N); 
h = waitbar(0,'Please wait...');
Ci=1000;
      

 for i=1:Ci    
       waitbar(i/Ci,h) 
       Noise1=randn(1,N);
%        Noise1=filter(Fir,1,Noise1);
%        Noise1(1:3/4*NN)=randn(1,3/4*NN);
       Noise3=randn(1,N);
       x=Noise1+0.01*Noise3;
       Noise2=randn(1,N);
       %主通道信号产生
       d=[zeros(1,Nd1) x(1:end-Nd1)]+0.01*Noise2;
     
       lenth=10;            %滤波器阶次
       w=zeros(1,lenth);     %系数初始化
       mu=1/(x*x'/N*lenth)*0.1;             %步长
       y=zeros(1,N);
       e=ones(1,N);
       beita=0.999;
       gama=0.01;
       MUmax=(1/(x*x'/N*lenth))*0.4;
       mu=MUmax;
       for n=lenth:N;
        xx=x(n:-1:n-lenth+1);
        y(n)=xx*w';
        e(n)=d(n)-y(n);
        w=w+2*mu*xx*e(n);
        ee(n)=e(n).^2;
%         mu=beita*mu+(1-beita)*gama*MUmax;
%         mm(n)=mu;
    end
   sum=sum+10*log10(ee);

 end
 close(h)
 
 NN=length(sum);
sum1(1:9)=sum(1:9);
for i=10:NN;
    sum1(i)=mean(sum(i-9:i));
end
 h3=figure(1);
 set(h3,'position',[300 300 500 400])
 plot(sum1/Ci)
 title('步长变化对滤波效果影响')
 xlabel('迭代次数')
 ylabel('误差')
 hold on

⌨️ 快捷键说明

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