本文转载自:http://www.cnblogs.com/xingshansi/p/6664478.html

前言

  西蒙.赫金的《自适应滤波器原理》第四版第九章:递归最小二乘(Recursive least squares, RLS)。记得看完第一章之后,半个月没有碰这本书,后来想着开了个头,还是该看到第十章的卡尔曼滤波才好,前前后后又花了半个月,总算看到了第九章。回头看看,静下心来,确实容易理清思路,也学到不少知识。虽然前路漫漫,编程水平不够、机器学习的理论还没多少概念、算法基础没多少、收入也很微薄......不过还是该表扬一下自己。既然选择了道路,自己还是该耐心走下去,哪怕上不了山顶,也该看看高处的风景。

  言归正传,本文主要包括:

  1)RLS原理介绍;

  2)RLS应用实例;

内容为自己的学习记录,其中多有借鉴他人的地方,最后一并给出链接。

一、RLS原理介绍

  A-问题描述

考虑指数加权的优化问题:

为遗忘因子,这里只讨论平稳情况,取

从而得到最优解:

其中:

可以看到,对应的就是最小二乘思想。回头看看之前分析的LMS以及NLMS,用的是随机梯度下降的思想,这是RLS与LMS很明显的不同点。

由于时刻在变换,最优解如何更新呢?

  B-迭代更新

首先给出文中用到的矩阵求逆引理:

矩阵求逆引理

定义逆矩阵:

利用矩阵求逆引理:

其中称为增益向量,由上式得出:

借助迭代:

可以得到权重的更新公式:

其中为估计误差:

至此实现RLS的整个步骤。

二、RLS应用实例

  A-算法步骤

结合上文的推导,给出RLS的迭代步骤:

步骤一:初始化

其中为很小的正数,如1e-7;

步骤二:迭代更新

  B-代码应用

给出主要代码,可以结合前文的LMS/NLMS对比分析:

function [e,w]=rls(lambda,M,u,d,delta)
% recursive least squares,rls.
% Call:
% [e,w]=rls(lambda,M,u,d,delta)
%
% Input arguments:
% lambda = constant, (0,1]
% M = filter length, dim 1x1
% u = input signal, dim Nx1
% d = desired signal, dim Nx1
% delta = constant for initializaton, suggest 1e-7.
%
% Output arguments:
% e = estimation error, dim Nx1
% w = final filter coefficients, dim Mx1
% Step1:initialize
% 2017-4-4 14:34:33, Author: Gui
w=zeros(M,1);
P=eye(M)/delta;
u=u(:);
d=d(:);
% input signal length
N=length(u);
% error vector
e=d.';
% Step2: Loop, RLS
for n=M:Nuvec=u(n:-1:n-M+1);e(n)=d(n)-w'*uvec;k=lambda^(-1)*P*uvec/(1+lambda^(-1)*uvec'*P*uvec);P=lambda^(-1)*P-lambda^(-1)*k*uvec'*P;w=w+k*conj(e(n));
end
给出应用:
[s, fs, bits] = wavread(filename);
s=s-mean(s);
s=s/max(abs(s));
N=length(s);
time=(0:N-1)/fs;
clean=s';
ref_noise=.1*randn(1,length(s));
mixed = clean+ref_noise;
mu=0.05;M=2;espon=1e-4;
% [en,wn,yn]=lmsFunc(mu,M,ref_noise,mixed);
% [en,wn,yn]=nlmsFunc(mu,M,ref_noise,mixed,espon);
delta = 1e-7;
lambda = 1;
[en,w]=rls(lambda,M,ref_noise,mixed,delta);
对应结果图:

可以看出不像NLMS/LMS有一个慢速收敛的过程,RLS在开始阶段就得到较好的降噪。

  C-与LMS对比

与LMS对比,可以观察到RLS的几点特性:

  • 平稳环境λ=1,其实是最小二乘的思想;LMS/NLMS是随机梯度下降思想;
  • 最小二乘是直接得出结果,随机梯度下降收敛慢,因此RLS比LMS/NLMS收敛快一个数量级;

参考:

  • Simon Haykin 《Adaptive Filter Theory Fourth Edition》.

自适应滤波器:递归最小二乘(RLS)相关推荐

  1. 递归最小二乘(RLS)算法详解

    本文首发在我的个人博客:宅到没朋友,欢迎大家来玩! 代码下载链接在最下方! 1.最小二乘算法简介 最小二乘算法基于确定性思想,该算法讨论怎样根据有限个观测数据来寻找滤波器的最优解,即求如下图这样具有M ...

  2. 浅谈自适应滤波器---(快速RLS算法)

    在上一篇博客中(浅谈自适应滤波器)我给大家介绍了关于自适应滤波器的一些入门级的知识,并分析了常规RLS算法单次迭代的计算量级为O[N2],当阶数N增大时相应的计算量显著增大,为了将计算量级降低到O[N ...

  3. 信号处理学习笔记6——自适应滤波器4-递归最小二乘(RLS)自适应滤波器

        前面学习的LMS自适应滤波器的核心思想是最速下降法,并根据当前输入信号和期望输出对代价函数的瞬时梯度进行估计.但LMS只使用了当前时刻的输入和期望信号,没有充分利用过去的信息.这就导致LMS自 ...

  4. rls最小二乘法 c语言,RLS递归最小二乘(最新整理)

    <RLS递归最小二乘(最新整理)>由会员分享,可在线阅读,更多相关<RLS递归最小二乘(最新整理)(4页珍藏版)>请在人人文库网上搜索. 1.实验二:实现自适应的递归最小二乘法 ...

  5. 自适应滤波:递归最小二乘

    作者:桂. 时间:2017-04-04  15:51:03 链接:http://www.cnblogs.com/xingshansi/p/6664478.html 声明:欢迎被转载,不过记得注明出处哦 ...

  6. 【语音去噪】基于最小二乘自适应滤波LMS和RLS实现语音去噪含Matlab源码

    1 简介 自适应信号处理的理论和技术已经成为人们常用滤波和去噪技术.文中讲述了自适应滤波的原理以及LMS算法和RLS算法两种基本自适应算法的原理及步骤.并用MATLAB分别对两种算法进行了自适应滤波仿 ...

  7. 自适应滤波器2-维纳滤波器-误差性能曲面

    最近想要同步CSDN和微信公众号的内容,各位看客们可以两边都关注一下,方便获取最新的信息.请扫描下面的的二维码添加关注,谢谢支持. ---------------------------------- ...

  8. 自适应滤波器算法综述以及代码实现

    作者:凌逆战 文章地址:自适应滤波器算法综述以及代码实现 - 凌逆战 - 博客园 并不是每个自适应滤波器的的代码我都实现了,我需要一定的时间,一有时间我就会来更新代码,记得关注我,如果有问题记得反馈 ...

  9. 自适应滤波器的原理及输入序列总结

    参考博文链接 一.自适应滤波器简介 自适应滤波器由参数可调的数字滤波器和自适应算法两部分组成.如图所示. 输入信号x(n) 通过参数可调数字滤波器后产生输出信号 y(n),将其与期望信号d(n)进行比 ...

最新文章

  1. 探索JAVA并发 - 如何减少锁的竞争
  2. redis数据库和python的交互
  3. Oracle数据库日期范围查询的两种实现方式
  4. leetcode面试题 08.12. 八皇后(回溯)
  5. dubbo 支持服务降级吗_dubbo面试题!会这些,说明你真正看懂了dubbo源码
  6. IDEA 2021.3 重磅发布!远程开发 (Beta) 、机器学习、故障自检、体验优化......
  7. sqlite时间比较_一份经过时间检验的 Laravel PHPUnit 测试经验分享
  8. Android RecyclerView网格布局动画
  9. 禅道项目管理——bug管理工具
  10. matlab用劳斯判据求k的范围,「精」已知单位负反馈系统的开环传递函数为G=K/s试确定系统稳定时的K值范围...
  11. 51单片机-温度PID算法(C程序)
  12. 白话理解傅里叶变换原理(时域频域)
  13. win10升级助手_不用QQ也能电脑远程,win10这功能太良心了!真后悔晚发现
  14. 服务器名称 历史修改记录,清除 SQL Server Management Studio 服务器名称历史记录
  15. 工作中那些让人印象深刻的BUG(1)
  16. Pr 入门教程之如何创建新序列?
  17. Windows10永久关闭系统更新
  18. TP6基础知识【新框架】
  19. 电脑显示没有wifi连接到服务器地址,WIFI无ip分配怎么解决
  20. mac os 多屏显示Dock

热门文章

  1. android浏览器和iPhone浏览器
  2. 【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341
  3. shiro设置ip白名单_亚马逊家庭IP:Luminati的搭建的步骤
  4. vs2012 visual studio 2012安装失败管道正在关闭解决方法
  5. 微软明年停止支持IE浏览器 鼓励使用Edge浏览器
  6. 计算机技术在法学方面的应用,现代计算机技术为法学带来了什么-西安交通大学教师个人主页.PDF...
  7. Mysql 增加表注释
  8. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! platform@1.0.0 start: `node build/dev-server.js`
  9. 浏览器数据库 IndexedDB 介绍
  10. GSoC 从开始到中选