LMS算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自适应信号处理算法(LMS算法)
近来有许多同学想我询问LMS算法的仿真程序,这里提供一个从别处下载下来的,要验证。%自适应信号处理算法
clear all;
hold off;
sysorder=5; %抽头数
N=1000; %总采样次数
n1=randn(N,1);%产生高斯随机系列
n2=randn(N,1);
[b,a]=butter(2,0.25);
Gz=tf(b,a,-1); %逆变换函数
h=[0.0976;0.2873;0.3360;0.2210;0.0964;]; %信道特性向量
y = lsim(Gz,n1);%加入噪声
noise = n2 * std(y)/(10*std(n2));%噪声信号
d = y + noise;%期望输出信号
totallength=size(d,1);%步长
N=60 ; %60节点作为训练序列
%算法的开始
w = zeros ( sysorder , 1 ) ;%初始化
for n = sysorder : N
u = inp(n:-1:n-sysorder+1) ;% u的矩阵
y(n)= w' * u;%系统输出
e(n) = d(n) - y(n) ;%误差
if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n) ;%迭代方程end
%检验结果
for n = N+1 : totallength
u = inp(n:-1:n-sysorder+1) ;
y(n) = w' * u ;
e(n) = d(n) - y(n) ;%误差
end
hold on
plot(d)
plot(y,'r');
title('系统输出') ;
xlabel('样本')
ylabel('实际输出')
figure
semilogy((abs(e))) ;% e的绝对值坐标title('误差曲线') ;
xlabel('样本')
ylabel('误差矢量')
figure%作图
plot(h, 'k+')
hold on
plot(w, 'r*')
legend('实际权矢量','估计权矢量') title('比较实际和估计权矢量') ;