📄 laolu___step2lms.m
字号:
clear all;
clc;
L=1000;
x=zeros(1,L);
image=zeros(1,L);
v=imnoise(image,'gaussian',0,0.8);
a1=1.558;a2=-0.81;
%以下为2阶LMS横向滤波器参数;
w1=zeros(1,L);
w2=zeros(1,L);
u=0.005;
%以下为2阶LMS格型滤波器参数;
M=3;
k=zeros(M-1,L);
f=zeros(M,L);
b=zeros(M,L);
beta=2*u;
for n=3:L;
%以下为2阶LMS横向滤波器;
x(n)=v(n)+a1*x(n-1)+a2*x(n-2);
y(n)=w1(n-1)*x(n-1)+w2(n-1)*x(n-2);
e(n)=x(n)-y(n);
w1(n)=w1(n-1)+2*u*e(n)*x(n-1);
w2(n)=w2(n-1)+2*u*e(n)*x(n-2);
%以下为2阶LMS格型滤波器;
f(1,n)=x(n);
b(1,n)=x(n);
for i=2:M;
j=i-1;%作为k的行数
f(i,n)=f(j,n)+k(j,n-1)*b(j,n-1);
b(i,n)=b(j,n-1)+k(j,n-1)*f(j,n);
k(j,n)=k(j,n-1)-beta*[f(i,n)*b(j,n-1)+b(i,n)*f(j,n)] ;
end;
end;
for n=1:L;
a11(n)=-k(1,n)*[1+k(2,n)];
a22(n)=-k(2,n);
end;
n=1:L;
figure(1);
plot(n,a1,'r:',n,w1,'b',n,a11,'black',n,w2,'b',n,a22,'black',n,a2,'r:'),
title('LMS横向与格型滤波器'),xlabel('时间n'),ylabel('权值逼近');
legend('黑色---格型权值','蓝色---横向权值');
figure(2);
subplot(2,1,1),plot(n,e(n).^2,'r'),title('LMS横向滤波器误差'),xlabel('时间n'),ylabel('误差功率');
subplot(2,1,2),plot(n,f(i,n).^2,'r'),title('LMS格型滤波器误差'),xlabel('时间n'),ylabel('误差功率');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -