一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【优化算法】改进定步长与变步长LMS算法【含Matlab源码 629期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、LMS简介

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

三、部分源代码

clear all
clc
t=0:1/1000:100-1/1000;
s=15*sin(0.15*pi*t);
snr=10;
s_power=var(s);              %var函数: 返回方差值
linear_snr=10^(snr/10);
factor=sqrt(s_power/linear_snr);
noise=randn(1,length(s))*factor;
%noise=wgn(1,length(s),factor);
x=s+noise;                   %由SNR计算随机噪声
x1=noise;                    %噪声源输入
x2=noise;
%x3=noise;
w1=0;                       %权系数初值
w2=0;
%w3=0;
e=zeros(1,length(x));
error=zeros(1,length(x));
y=0;
%mu=0;
mu=0.000009;
for i=1:100000                 %定步长LMS算法y=w1*x1(i)+w2*x2(i);%+w3*x3(i);e(i)=x(i)-y;error(i)=s(i)-e(i);%   ee=error^2;%   mu=xuanze(mu,ee);w1=w1+mu*e(i)*x1(i);w2=w2+mu*e(i)*x2(i);%  w3=w3+mu*e(i)*x3(i);
end
figure(1)
subplot(4,1,1)
plot(t,s);
title('纯正弦信号')
subplot(4,1,2)
plot(t,x);
title('带噪声正弦信号')
axis([0 100 -30 30]);
subplot(4,1,3)
plot(t,noise);
title('噪声信号')
axis([0 100 -30 30]);
subplot(4,1,4)
plot(t,e);
title('定步长LMS算法自适应噪声对消器')
axis([0 100 -30 30]);
wu=error;
figure(2)
subplot(3,1,1);
plot(wu);
title('定步长LMS算法收敛过程')%自适应噪声对消器
clear all
clc
t=0:1/1000:100-1/1000;
s=15*sin(0.15*pi*t);
snr=10;
s_power=var(s);              %var函数: 返回方差值
linear_snr=10^(snr/10);
factor=sqrt(s_power/linear_snr);
noise=randn(1,length(s))*factor;
x=s+noise;                   %由SNR计算随机噪声
x1=noise;                    %噪声源输入
x2=noise;
w1=0;                       %权系数初值
w2=0;
e=zeros(1,length(x));
error=zeros(1,length(x));
y=0;
mu=0;
%mu=0.05;
for i=1:100000                 %变步长LMS算法y=w1*x1(i)+w2*x2(i);e(i)=x(i)-y;error(i)=s(i)-e(i);ee=error(i)^2;if ee>0.0005;ee=0.0005;endmu=xuanze(mu,ee);w1=w1+mu*e(i)*x1(i);w2=w2+mu*e(i)*x2(i);
end
figure(3)
subplot(4,1,1)
plot(t,s);
title('纯正弦信号')
subplot(4,1,2)
plot(t,x);
title('带噪声正弦信号')
axis([0 100 -30 30]);
subplot(4,1,3)
plot(t,noise);
title('噪声信号')
axis([0 100 -30 30]);
subplot(4,1,4)
plot(t,e);
title('变步长LMS算法自适应噪声对消器')
axis([0 100 -30 30]);
wu=error;
figure(2)
subplot(3,1,2);
plot(wu);
title('变步长LMS算法收敛过程')%自适应噪声对消器
clear all
clc
t=0:1/1000:100-1/1000;
s=15*sin(0.15*pi*t);
snr=10;
s_power=var(s);              %var函数: 返回方差值
linear_snr=10^(snr/10);
factor=sqrt(s_power/linear_snr);
noise=randn(1,length(s))*factor;
x=s+noise;                   %由SNR计算随机噪声
x1=noise;                    %噪声源输入
x2=noise;
w1=0;                       %权系数初值
w2=0;
e=zeros(1,length(x));
error=zeros(1,length(x));
y=0;
mu=0;
%mu=0.05;
for i=1:100000                 %改进变步长LMS算法y=w1*x1(i)+w2*x2(i);e(i)=x(i)-y;ee=exp(abs(error(i))^3)-1;%  ee=error^4; end    mu=xuanze(mu,ee);w1=w1+mu*e(i)*x1(i);w2=w2+mu*e(i)*x2(i);
end
figure(4)
subplot(4,1,1)
plot(t,s);
title('纯正弦信号')
subplot(4,1,2)
plot(t,x);
title('带噪声正弦信号')
axis([0 100 -30 30]);
subplot(4,1,3)
plot(t,noise);
title('噪声信号')
axis([0 100 -30 30]);
subplot(4,1,4)
plot(t,e);
title('改进变步长LMS算法自适应噪声对消器')
axis([0 100 -30 30]);

四、运行结果




五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

【优化算法】改进定步长与变步长LMS算法【含Matlab源码 629期】相关推荐

  1. 【优化布局】基于matlab免疫算法求解充电站最优布局【含Matlab源码 2539期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[生产调度]基于matlab免疫算法求解生产调度零等待问题[含Matlab源码 1178期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...

  2. 【微电网优化】基于matlab粒子群算法求解综合能源系统优化问题【含Matlab源码 1969期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[微电网优化]基于matlab粒子群算法求解综合能源系统优化问题[含Matlab源码 1969期] 点击上面蓝色字体,直接付费下载,即可. ...

  3. 【数字信号去噪】基于matlab粒子群算法优化VMD分解分量选择数字信号降噪【含Matlab源码 1979期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号去噪]基于matlab粒子群算法优化VMD分解分量选择数字信号降噪[含Matlab源码 1979期] 点击上面蓝色字体,直接付费 ...

  4. 【优化布局】免疫算法求解充电站最优布局【含Matlab源码 2539期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[生产调度]基于matlab免疫算法求解生产调度零等待问题[含Matlab源码 1178期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...

  5. 【雷达通信】基于matlab NCP算法SAR回波生成和成像【含Matlab源码 1185期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[雷达通信]基于matlab NCP算法SAR回波生成和成像[含Matlab源码 1185期] 点击上面蓝色字体,直接付费下载,即可. 获 ...

  6. 【BA三维路径规划】基于matlab改进的蝙蝠算法农用无人机三维路径规划【含Matlab源码 1514期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  7. 【图像分割】基于matlab形态学重建和过滤改进FCM算法(FRFCM)的图像分割【含Matlab源码 085期】

    ⛄一.简介 首先,通过引入形态学重构操作将图像的局部空间信息纳入FRFCM中,以保证抗噪性和图像细节保留.其次,基于局部空间邻居和聚类中心内像素之间距离的成员资格分区的修改被仅依赖于成员资格分区的空间 ...

  8. 【配送路径规划】蚁群算法求解配送路径最短问题【含Matlab源码 2222期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  9. 【配送路径规划】基于matlab蚁群算法求解配送路径最短问题【含Matlab源码 2222期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  10. 【ABC三维路径规划】基于matlab人工蜂群算法多无人机三维路径规划【含Matlab源码 170期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

最新文章

  1. 安卓获取浏览器上网记录_Android 获取浏览器当前分享页面的截屏示例
  2. mysql 二进制日志变化_mysql-二进制日志
  3. javascript常用小例子
  4. 电子商务中遇到组合搜索的问题
  5. Filebeat配置module采集nginx日志
  6. Qt Creator向项目添加库
  7. 对pthread_cond_wait()函数的理解
  8. JAVA入门级教学之(深入throws的异常抛出机制)
  9. MySql数据的启动和停止以及SQLyog图形化工具的下载
  10. 基于Java的项目开发过程
  11. win7 局域网共享文件
  12. 【ELK解决方案】ELK集群+RabbitMQ部署方案以及快速开发RabbitMQ生产者与消费者基础服务...
  13. 如何在笔记本电脑上搭建双系统(windows与linux)
  14. java 变量 英文_java 变量(翻译自Java Tutorials)
  15. 解决kettle部署在linux中界面变成英文的问题
  16. 邮件合并的逆向应用,从多个Word文档中取值到Excel中
  17. 节约粮食海报|节约粮食就是对袁隆平院士最好的怀念!
  18. mp3计算机无法识别,MP3\MP4连接windows电脑后无法识别怎么办
  19. Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
  20. 数据库双活和ALWAYSON相比的四大优势

热门文章

  1. centos配置虚拟主机
  2. 在Docker Swarm上部署Apache Storm:第1部分
  3. Json简介与转换数据例子
  4. 修改Apache配置文件开启gzip压缩传输
  5. Kinect开发教程八:OpenNI2显示深度、彩色及融合图像
  6. OpenCV人工智能图像处理学习笔记 第6章 计算机视觉加强之机器学习下 Hog_SVM小狮子识别
  7. 20200628每日一句
  8. 20200201每日一句
  9. Atitit index threod type 索引原理与类型 种类 目录 1.1. 每个文档在经过底层的存储引擎持久化后 1 2. MongoDB索引类型 2 2.1. 包括单字段索引、复合索引
  10. Atitit cache缓存之道 attilax 艾提拉总结 1. 使用缓存的目的(使用缓存) 1 1.1. 1、实现目标减少数据库的负担 1 1.2. 加快查询的速度 2 2. 缓存的常见参数 过