jiexiangguan lms.m

来自「自适应滤波器的接相关lms算法基于matlab的实现」· M 代码 · 共 45 行

M
45
字号
clear all
close all
N=15; %滤波器阶数
sample_N=1000; %采样点数

A=1; %信号幅度
snr=10; %信噪比
t=1:sample_N; 
length_t=100; %期望信号序列长度
d=A*sin(2*pi*t/length_t); %期望信号
M=length(d); %M为接收数据长度
x=awgn(d,snr); %经过信道(加噪声)



y=zeros(1,M);
h=zeros(1,N); %LMS滤波器系数

y1=zeros(1,N);
for n=N+1:M %系数调整LMS算法
x1=x(n-N+1:n);
x2=x(n-N:n-1);
%解相关LMS算法
y(n)=h*x1';
e(n)=d(n)-y(n);
a=x2*x1'/(x2*x2');
v=x1-a*x2;
b=0.1*e(n)/(x1*v');
h=h+b*v;
end
error=e.^2; %LMS算法每一步迭代的均方误差
for n=N:M %利用求解得到的h,与输入信号x做卷积,得到滤波后结果
x3=x(n:-1:n-N+1);
y1(n)=h*x3';
end
subplot(411)
plot(t,d);
axis([1,sample_N,-2,2]);
subplot(412)
plot(t,x);
subplot(413)
plot(t,y);

figure(2)
plot(t,error) 

⌨️ 快捷键说明

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