基于粒子群和麻雀搜索的LMS自适应滤波算法 - 附代码
基于粒子群和麻雀搜索的LMS自适应滤波算法
文章目录
- 基于粒子群和麻雀搜索的LMS自适应滤波算法
- 1.LMS 自适应滤波算法
- 2.自适应滤波在降噪中的应用
- 3.粒子群算法对LMS滤波算法的改进
- 4.PSO—LMS算法实验
- 5.SSA—LMS算法实验
- 6.参考文献
- 7.Matlab代码
摘要:在自适应滤波算法中,LMS算法是最常用的算法之一,因为具备结构简单,易于实现,性能稳定,计算复杂度低等特
点。然而, LMS算法也存在缺点,比如,收敛速度较慢,收敛精度低的问题,这就影响LMS算法在收敛性要求较高的领域中的
应用。使用粒子群算法和麻雀搜索算法对 LMS算法进行改进,可以将 LMS滤波设计变成对 LMS滤波参数优化的问题,利用粒子群算法的优化能力,使得滤波参数得到全局最优解。以此可以提高 LMS滤波算法的收敛性能,从而提高滤波性能。
1.LMS 自适应滤波算法
LMS滤波器的基本结构,如图1所示。根据如图1所示,该图为LMS滤波器的基本原理框图:
图1.LMS滤波器基本结构
初始化时,如式(1):
w(0)=w(0)=[000...0]Tw(0)=w(0)=[0 0 0 ... 0]^T w(0)=w(0)=[000...0]T
当 k ≥0 时,如式(2)、式(3)
e(k)=d(k)−xT(k)w(k)(2)e(k) = d(k) - x^T(k)w(k) \tag{2} e(k)=d(k)−xT(k)w(k)(2)
w(k+1)=w(k)−2ue(k)x(k)(3)w(k+1) =w(k)-2ue(k)x(k)\tag{3} w(k+1)=w(k)−2ue(k)x(k)(3)
其中,(k)为瞬时的误差,u为收敛因子,e(k)是误差信号,w(k)为的滤波器系数。按照梯度特性,w(k)在每次迭代运算中会自动调整,逐步是均值E[e2(k)]E[e^2(k)]E[e2(k)]最小化,E[e2(k)]E[e^2(k)]E[e2(k)]就是最小均方差。
2.自适应滤波在降噪中的应用
当自适应滤波被应用在降噪应用中是,它的结构框图,如图 2 所示.
图2.信号降噪结构
与看见的自适应滤波器结构是不同的。信号x(k)x(k)x(k)受到噪声n1(k)n_1(k)n1(k)的影响。而信号n2(k)n_2(k)n2(k)是与噪声相关的信号,它可以被测量到的信号。 n2(k)n_2(k)n2(k)也作为自适应滤波器的输入信号,受到干扰的信号x(k)+n1(k)x(k) + n_1(k)x(k)+n1(k)作为期望信号。
输出信号 y(k)y(k)y(k)与输入信号n2(k)n_2(k)n2(k)的数学关系式根据图 1是式(4)
y(k)=∑l=0Nwln2(k−l)(4)y(k) = \sum_{l=0}^{N}w_ln_2(k-l)\tag{4} y(k)=l=0∑Nwln2(k−l)(4)
按照均方误差方程,可以得到式(5)
E[e2(k)]=E[x2(k)]+E[n1(k)−y(k)]2(5)E[e^2(k)] = E[x^2(k)] + E{[n_1(k) - y(k)]^2}\tag{5} E[e2(k)]=E[x2(k)]+E[n1(k)−y(k)]2(5)
假如 x(k)x(k)x(k)与 n1(k)n_1(k)n1(k)和n2(k)n_2(k)n2(k)无关,那么该函数的最小MSEMSEMSE为式(6)
ξmin=E[e2(k)]=E[x2(k)](6)\xi_{min} = E[e^2(k)] = E[x^2(k)]\tag{6} ξmin=E[e2(k)]=E[x2(k)](6)
其中x(k)x(k)x(k)就是我们滤波所要得到的信号。
3.粒子群算法对LMS滤波算法的改进
式2和式3所示的更新方程是LMS算法的最重要的工作步骤。根据梯度特性E[e2(k)]E[e^2(k)]E[e2(k)]会不断趋于最小均方差。其中。从式2能够推倒出下式(7)。
e(k+1)=d(k+1)+xT(k+1)[w(k)−2ue(k)x(k)](7)e(k+1) = d(k+1) + x^T(k+1)[w(k)-2ue(k)x(k)]\tag{7} e(k+1)=d(k+1)+xT(k+1)[w(k)−2ue(k)x(k)](7)
e(k)e(k)e(k)是瞬时误差,根据式 7 所示,收敛因子2u决定了E[e2(k)]E[e^2(k)]E[e2(k)]的最小值。许多研究都是针对2u ,通过动态调整2u使得 值逐E[e2(k)]E[e^2(k)]E[e2(k)]步达到最小,从而提高收敛性。而文献[1]则使用粒子群算法优化能力,使得E[e2(k)]E[e^2(k)]E[e2(k)]每次迭代中做到最小化,实现 LMS 滤波的最优收敛效果,从而提升滤波降噪能力。
首先将收敛因子u设为搜索空间内的粒子,那么对 u的调整操作就转换为寻找粒子在空间的最优位置。
根据式(7),本文设定适应度函数,如下式(8)
F=min(e(k+1))(8)F = min(e(k+1)) \tag{8} F=min(e(k+1))(8)
该适应度函数能够实现瞬时误差的最小化,从而是最小均方差 MSE达到最小。
4.PSO—LMS算法实验
利用正弦信号加噪声生成模拟数据,数据如下图所示:
经过原始LSM和PSO-LSM滤波后的对比图如下并且利用绝对误差和做为评价标准:
从结果上来看改进后的LMS明显优于基础LMS滤波,滤波后的信号更接近原始信号,误差更小。
5.SSA—LMS算法实验
根据同样的原理利用麻雀搜索算法对LMS滤波算法进行改进
麻雀搜索算法的具体原理参考博客:https://blog.csdn.net/u011835903/article/details/108830958。
测试结果如下:
可以看到麻雀搜索算法对LMS滤波的提升仍然是比较明显的。
同时运行PSO-LMS和SSA-LMS得到如下结果:
可以看到SSA-LMS的效果更好,误差和更小。
6.参考文献
[1]赵轶骁,汪镭.基于粒子群的LMS算法在信号滤波降噪中的应用[J].微型电脑应用,2017,33(09):71-74.
7.Matlab代码
基于粒子群的LMS滤波算法
基于麻雀搜索算法的LMS滤波算法
个人资料介绍
基于粒子群和麻雀搜索的LMS自适应滤波算法 - 附代码相关推荐
- 基于粒子群优化的灰色预测方法(Matlab)——附代码
目录 摘要: 研究背景: GM(1,1)模型 基于PSO的灰色预测算法 运行结果: 本文Matlab代码分享 摘要: 本文对灰色预测算法进行了研究.在GM(1,1)模型中,发展系数a和灰色作用量u是两 ...
- 回声消除(AEC)原理、算法及实战——频域块LMS自适应滤波算法(FDAF)
块LMS自适应滤波算法中的线性卷积和线性相关均可以采用快速傅里叶变换(FFT)来实现.因此,块LMS自适应滤波算法的有效实现方法实际上是利用FFT算法在频域上完成滤波器系数的自适应.这样实现的块LMS ...
- 基于粒子群优化BP神经网络的预测 采用PSO算法优化bp网络实现预测
基于粒子群优化BP神经网络的预测 采用PSO算法优化bp网络实现预测,源码注释详细,matlab实现,直接运行即可. ID:72100632211160748韩雅涵122
- 基于Cat混沌与高斯变异的改进灰狼优化算法-附代码
基于Cat混沌与高斯变异的改进灰狼优化算法 文章目录 基于Cat混沌与高斯变异的改进灰狼优化算法 1.灰狼优化算法 2. 改进灰狼优化算法 2.1 混沌反向学习策略的种群初始化 2. 2 引入个体记忆 ...
- 扇区搜索机制的果蝇优化算法-附代码
扇区搜索机制的果蝇优化算法 文章目录 扇区搜索机制的果蝇优化算法 1.果蝇优化法 2. 扇区搜索机制 2.1 扇区搜索机制分析及设计 2.2 再优化概念 2.3 SS-FOA算法 3.实验结果 4.参 ...
- 基于信息共享搜索策略的自适应灰狼算法-附代码
基于信息共享搜索策略的自适应灰狼算法 文章目录 基于信息共享搜索策略的自适应灰狼算法 1.灰狼优化算法 2. 改进灰狼优化算法 2.1 Iterative 混沌映射初始化 2.2 非线性自适应收敛因子 ...
- 传统语音增强——最小均方(LMS)自适应滤波算法
一.语音降噪的意义 语音降噪主要研究如何利用信号处理技术消除信号中的强噪声干扰,从而提高输出信噪比以提取出有用信号的技术.消除信号中噪声污染的通常方法是让受污染的信号通过一个能抑制噪声而让信号相对不变 ...
- 基于交叉算子和非均匀变异算子的飞蛾扑火优化算法-附代码
基于交叉算子和非均匀变异算子的飞蛾扑火优化算法 文章目录 基于交叉算子和非均匀变异算子的飞蛾扑火优化算法 1.飞蛾扑火优化算法 2. 改进飞蛾扑火优化算法 2.1 交叉算子 2.2 非均匀变异算子 3 ...
- LMS自适应滤波算法的 matlab实现
算法思路 1LMS算法实现步骤: 1).令起始时刻 i=0自适应滤波器的系数矢量W(0)为任意值: 2).根据输入信号矢量X(i) ,利用期望信号d(i) 和滤波器的输出信号 y(i)计算误差信号e( ...
- LMS 自适应滤波算法原理和实现(不使用自带函数库)
1.基本原理 y(n)=x(n)wTe(n)=d(n)−y(n)w(n+1)=w(n)+μe(n)x(n)\begin{aligned} &y(n)=\pmb{x}(n)\pmb{w}^T\\ ...
最新文章
- pandas将列表list插入到dataframe的单元格中、pandas使用read_csv函数读取文件并设置保留数值的前置0( leading zeroes)
- 平时,需要查看电脑运行情况报告,就用这个工具查看统计出来
- python自学多久可以找到工作-自学Python的高效方法,学Python多久能找到工作?
- [模仿微软Live.cn]JavaScript输入邮箱自动提示
- uva 755	487--3279
- java element 获取属性_java 获取类,属性变量,方法,方法参数上注解的值等
- 用企业实例说明,制造业如何打破4大困境,解决数字化转型痛点
- CSDN助力HBuilder,为开发者提供源码托管服务
- Spring Boot单元测试入门实战之关于JUnit
- HBuilde H5开发,关于JSON的Storage存储
- 基于Python的旅游管理系统-小程序
- polyval polyvalm
- UMLChina公众号文章精选(20220602更新精选)
- CSDN:2020 年度 CSDN 博客之星评选——28 号【沉默王二】,感谢你投上的宝贵一票,感谢!
- 我的疫情时代——记在家的那个学期
- 大数据可视化核心技术
- matlab实现序列卷积和运算,用matlab计算序列卷积和并绘图
- vue自定义插件 封装一个类似 element 中 message 消息提示框的插件
- 【CTF-misc】真是阳间题!
- 星汉未来成为 FinOps 产业标准生态联盟首批会员
热门文章
- 英文课程名称 c语言程序设计,课程名称C语言程序设计I.doc
- JAVA输入jdb,解决 JAVA 单步调试键盘输入被 JDB 占用的问题
- python复制函数_Python numpy.copy函数方法的使用
- java lower_Java TreeSet lower()用法及代码示例
- linux快速删除大文件rsync,(总结)Linux下使用rsync最快速删除海量文件的方法
- 三维重建_彩色图和深度图转点云文件、ply和pcd相互转换、点云合并
- 随手记_unbuntu从命令行进入图形界面
- 论文笔记_S2D.05-2012-ECCV-从立体图像中提取与场景一致的三维对象和深度
- 线性代数【六】:解线性方程组
- 贝叶斯估计原理及流程