【优化算法】改进型的LMS算法-NLMS算法【含Matlab源码 631期】

一、简介

最小均方(LMS, Least Mean Squares)是最基本的自适应滤波算法。
LMS算法是自适应滤波器中常用的一种算法与维纳算法不同的是其系统的系数随输入序列而改变。维纳算法中截取输入序列自相关函数的一段构造系统的最佳系数。而LMS算法则是对初始化的滤波器系数依据最小均方误差准则进行不断修正来实现的。因此理论上讲LMS算法的性能在同等条件下要优于维纳。但是LMS是在初始值下逐步调整的,因此在系统稳定前,会有一段调整时间,调整时间受步长因子的控制,一定范围内,步长因子越大,调整时间越小,步长因子的最大取值为R的迹。LMS采用平方误差最小的原则代替均方误差最小的原则,信号基本关系如下:
在这里插入图片描述
在这里插入图片描述

二、源代码

clear all
close all
hold off%系统信道权数
sysorder = 5 ;%抽头数
N=1000;%总采样次数
inp = randn(N,1);%产生高斯随机系列
n = 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,inp);%加入噪声
n = n * std(y)/(10*std(n));%噪声信号
d = y + n;%期望输出信号
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;%系统输出
r(n)=u'*u;%自相关矩阵
e(n) = d(n) - y(n) ;%误差
fai=.0001;%修正参数,为防止u'*u过小导致步长值太大而设置的
if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n)/(r(n)+fai) ;%迭代方程
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+')

三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、备注

完整代码或者代写添加QQ 1564658423
往期回顾>>>>>>
【车间调度】基于matlab粒子群的车间调度【含Matlab源码 013期】
【车间调度】基于matlab遗传算法求解车间调度模型含GUI【含Matlab源码 049期】
【车间调度】基于matlab遗传算法求解车间调度【含Matlab源码 070期】
【车间调度】基于matlab nsgaII求解车间调度【含Matlab源码 071期】
【车间调度】基于matlab改进蛙跳算法求解车间调度问题【含Matlab源码 073期】
【车间调度】基于matlab求解置换流水车间调度问题【含Matalb源码 176期】
【车间调度】基于matlab PSO求解6X6的车间调度问题【含Matlab源码 411期】
【车间调度】基于matlab粒子群的生产调度【含Matlab源码 412期】
【车间调度】基于matlab遗传算法多目标流水车间调度【含Matlab源码 443期】
【优化求解】基于matlab粒子群的微电网多目标优化【含Matlab源码 444期】
【优化求解】基于matlab蜻蜓算法求解多目标优化问题【含Matlab源码 477期】
【优化算法】海洋捕食者算法(MPA)【含Matlab源码 478期】
【优化算法】黑洞模拟算法(MVO)【含Matlab源码 479期】
【优化算法】基于变异策略的改进型花朵授粉算法【含Matlab源码 480期】
【优化求解】基于matlab粒子群算法求解水火电经济调度【含Matlab源码 500期】
【优化求解】基于麻雀搜索算法3D无线传感器网络(WSN)覆盖优化【含Matlab源码 599期】
【优化求解】基于遗传算法求解多目标配电网重构模型【含Matlab源码 622期】
【优化算法】改进定步长与变步长LMS算法【含Matlab源码 629期】
【优化算法】改进型的LMS算法【含Matlab源码 630期】

猜你喜欢

转载自blog.csdn.net/TIQCmatlab/article/details/115221255