📄 bianbuchanglms.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 + -