【优化算法】改进型的LMS算法
发布日期:2021-05-04 12:56:05
浏览次数:14
分类:技术文章
本文共 1938 字,大约阅读时间需要 6 分钟。
一、简介
最小均方(LMS, Least Mean Squares)是最基本的自适应滤波算法。
LMS算法是自适应滤波器中常用的一种算法与维纳算法不同的是其系统的系数随输入序列而改变。维纳算法中截取输入序列自相关函数的一段构造系统的最佳系数。而LMS算法则是对初始化的滤波器系数依据最小均方误差准则进行不断修正来实现的。因此理论上讲LMS算法的性能在同等条件下要优于维纳。但是LMS是在初始值下逐步调整的,因此在系统稳定前,会有一段调整时间,调整时间受步长因子的控制,一定范围内,步长因子越大,调整时间越小,步长因子的最大取值为R的迹。LMS采用平方误差最小的原则代替均方误差最小的原则,信号基本关系如下:二、源代码
%一种变步长lms 算法clear allclose allhold off sysorder = 5 ; %抽头数t = 0:1/5000:1-0.0001;s = sin(2*pi*t); %不带噪声的信号N = size(t);M = length(t);% %计算自相关矩阵的最大特征值% xx=rcorr(length(s),s);% [V,D]=eig(xx);% Dmax=max(max(D));n = randn(N); %产生高斯白噪声[b,a] = butter(2,0.25);Gz = tf(b,a,-1); %逆变换函数y = lsim(Gz,s); %加入正弦信号z = n * std(y)/(10*std(n)); %标准差为0的噪声信号x = s + z; %实际输入信号dd = s; %期望输出信号%算法的开始w = zeros(1,sysorder);%权向量初始化umax=0.45; %设置步长最大值umin=0.0003; %设置步长最小值for i=1:2 u = umax; y(i) = x(i:i+4)* w' ; %系统输出 e(i) = dd(i) - y(i);%误差 w = w + u * e(i) * x(i); %迭代方程endfor i = 3:M-4 if ((u >= umin)&&(u <= umax)) y(i) = x(i:i+4)* w' ; %系统输出 e(i) = dd(i) - y(i); %误差 w = w + u * e(i) * x(i); %迭代方程 u = ((e(i) * e(i-1)/((dd(i))^2)))* umax; %步长更新公式 end if u > umax u = umax; y(i) = x(i:i+4)* w' ; %系统输出 e(i) = dd(i) - y(i); %误差 w = w + u * e(i) * x(i); %迭代方程 u = ((e(i) * e(i-1)/((dd(i))^2)))* umax; %步长更新公式 end if u < umin u = umin; y(i) = x(i:i+4)* w' ; %系统输出 e(i) = dd(i) - y(i); %误差 w = w + u * e(i) * x(i); %迭代方程 u = ((e(i) * e(i-1)/((dd(i))^2)))* umax; %步长更新公式 endend %计算均方误差 st = 0; i = 1;while i <= M-4 a = (e(i))^2; st = st+a; out = (1/i)*st; yy(1,i) = out; i = i+1; end% %作图hold on;%不带噪声的信号subplot(3,1,1)plot(s) title('纯净的输入信号') %噪声subplot(3,1,2)plot(z,'g') title('噪声') %带噪声的输入信号 subplot(3,1,3)plot(x,'c') title('带噪声的输入信号')figure
三、运行结果
四、备注
完整代码添加QQ1575304183
转载地址:https://blog.csdn.net/qq_34763204/article/details/116310964 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月05日 12时23分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MySQL的行锁、表锁、间隙锁详解
2019-04-27
和阿里面试官扯了半小时ArrayBlockingQueue源码
2019-04-27
远离996,PDMan开源免费的国产数据库建模工具!
2019-04-27
现代操作系统的存储器结构
2019-04-27
深度揭秘年薪60W的阿里P7简历制作过程!
2019-04-27
可能是全网最全的SpringBoot启动流程源码分析(基于 2.1.5 版本)
2019-04-27
BAT华为等一线大厂工程师都在用的优秀 IDEA 插件
2019-04-27
屏幕录制和编辑神器ScreenFlow轻松上手
2019-04-27
防止Java序列化/反射破坏单例模式的解决方案
2019-04-27
面试/工作必备的vim基础及快捷键操作
2019-04-27
@SpringBootApplication注解到底做了什么,你真的了解吗?
2019-04-27
Java生态中性能最强数据库连接池HikariCP
2019-04-27
Restful Web Service设计规范
2019-04-27
设计模式实战-状态模式(State Pattern)
2019-04-27
同步更新 github上fork别人的项目的最新提交
2019-04-27
一文讲明Dubbo Remoting模块
2019-04-27
OAuth 2.0实战(一)-通俗光速入门
2019-04-27
OAuth 2.0实战(二)-为什么要先获取授权码code?
2019-04-27