在RLS自适应滤波器的实现过程中,难免不涉及矩阵的求逆运算。而求逆操作双是非常耗时的,一个很自然的想法就是尽可能的避免直接对矩阵进行求逆运算。那么,在RLS自适应滤波器的实现中,有没有一种方法能避免直接求逆运算呢?答案当然是用的:使用矩阵求逆引理来避免对矩阵进行直接求逆。

  这里先对矩阵求逆引理做下介绍,也叫做Woodbury矩阵恒等式(或者称做Sherman–Morrison formula,这里统一称矩阵求逆引理)在线性代数中:

\[{\left( {A + UCV} \right)^{ - 1}} = {A^{ - 1}} - {A^{ - 1}}U{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}}\]

其中,AC必须是可逆方阵,UV可以是方阵也可以不是方阵。先不忙着记公式,这个不是最重要的,首先要弄明白的是,矩阵求逆引理的写成这个样子,它要解决的是什么样的问题,其思想是什么?

  矩阵求逆引理要解决的问题是:已知一个高维矩阵A的逆矩阵,当A矩阵产生了一个非常小的变化(维数远低于A或者低于A)时,能不能根据已知的A的逆矩阵,求产生微小变化后的矩阵的逆。

  现在我们知道当然是可以的,这里的微小变化,指的就是恒等式中的矩阵UCV。

  知道了矩阵求逆引理解决的是什么样的问题,主要思想后,感觉还是有点不得足,最好能证明一下,好让自己有个“底”,同时满足下好奇心。知其然同时又知其所以然,有什么不好!这里只对其中一种证明方法做下详细的介绍,以方便理解,考虑以下方程组:

\[\left\{ {\begin{array}{*{20}{c}}
{AX + UY = I} \\
{VX - {C^{ - 1}}Y = 0} \\
\end{array}} \right.\]

及其矩阵形式

\[\left[ {\begin{array}{*{20}{c}}
A & U \\
V & { - {C^{ - 1}}} \\
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
X \\
Y \\
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
I \\
0 \\
\end{array}} \right]\]

根据第2个方程可知:$Y = CVX$,代入第1个方程得到$X = {A^{ - 1}}(I - UY)$,再将X的表达式代回第二个方程,得到

\[{C^{ - 1}}Y = V{A^{ - 1}}(I - UY) = V{A^{ - 1}} - V{A^{ - 1}}UY\]

将$V{A^{ - 1}}$与${C^{ - 1}}Y$交换等式两边位置

\[V{A^{ - 1}} = {C^{ - 1}}Y + V{A^{ - 1}}UY = \left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)Y\]

可得到Y的表达式$Y = {\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}}$,这里将Y再次第1个方程$AX + UY = I$,得到

\[\begin{array}{l}
AX + U{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}} = I \\
AX = I - U{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}} \\
X = {A^{ - 1}}\left[ {I - U{{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)}^{ - 1}}V{A^{ - 1}}} \right] \\
X = {A^{ - 1}} - {A^{ - 1}}U{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}} \\
\end{array}\]

  关于其它证明部分,建议可以参考wiki中对Woodbury矩阵恒等式的介绍,里面有好几种不同的证明方法(直接证明、代数证明、矩阵分块推导、LDU分解推导),写的都非常好,建议喜欢追根究底的朋友认真看下。

  另外,矩阵求逆引理更通用的是二项式反转定理(Binomial inverse theorem),很多的变种都可以视为二项式反转定理的特殊情况,这些变种icoolmedia还没有整理完毕,先不一一说明了。

  下面就用矩阵求逆引理来解决RLS滤波器中的求逆问题,这里假定读者有最小二乘法的基础,首先给出更新滤波器输入向量相关矩阵的公式和矩阵求逆引理的表达式(下面的推导过程来自于Simon Haykin《自适应滤波器原理》第10章的学习)。

\[{\bf{\Phi }}(n) = \lambda {\bf{\Phi }}(n - 1) + {\bf{u}}(n){{\bf{u}}^{\bf{H}}}(n)\]

\[{{\bf{A}}^{ - 1}} = {\bf{B}} - {\bf{BC}}{\left( {{\bf{D}} + {{\bf{C}}^{\bf{H}}}{\bf{BC}}} \right)^{ - 1}}{{\bf{C}}^{\bf{H}}}{\bf{B}}\]

  可以看到,上面的矩阵求逆引理与本文开始里介绍的不同,这也是一个求逆引理的变种。不多做介绍,先记下来就好,后面另在博客中详述吧。如果设:${\bf{A}} = \Phi (n)$,${{\bf{B}}^{ - 1}} = \lambda \Phi (n - 1)$,${\bf{C}} = {\bf{u}}(n)$,${\bf{D}} = 1$。对波器输入向量相关矩阵迭代更新公式应用矩阵求逆引理公式,可得

\[{{\bf{\Phi }}^{ - 1}}(n) = {\lambda ^{ - 1}}{{\bf{\Phi }}^{ - 1}}(n - 1) - \frac{{{\lambda ^{ - 2}}{{\bf{\Phi }}^{ - 1}}(n - 1){\bf{u}}(n){{\bf{u}}^{\bf{H}}}(n){{\bf{\Phi }}^{ - 1}}(n - 1)}}{{1 + {\lambda ^{ - 1}}{{\bf{u}}^{\bf{H}}}(n){{\bf{\Phi }}^{ - 1}}(n - 1){\bf{u}}(n)}}\]

  如果设

\[{\bf{P}}(n) = {{\bf{\Phi }}^{ - 1}}(n)\]

\[{\bf{k}}(n) = \frac{{{\lambda ^{ - 1}}{\bf{P}}(n){\bf{u}}(n)}}{{1 + {\lambda ^{ - 1}}{{\bf{u}}^{\bf{H}}}(n){{\bf{\Phi }}^{ - 1}}(n - 1){\bf{u}}(n)}}\]

  这里对增益k(n)做如下变换,得到其简化形式:

\[\begin{array}{l}
{\bf{k}}(n) = {\lambda ^{ - 1}}{\bf{P}}(n - 1){\bf{u}}(n) - {\lambda ^{ - 1}}{\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1){\bf{u}}(n) \\
= \left[ {{\lambda ^{ - 1}}{\bf{P}}(n - 1) - {\lambda ^{ - 1}}{\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1)} \right]{\bf{u}}(n) \\
= {\bf{P}}(n){\bf{u}}(n) \\
\end{array}\]

  或者也可以表示为:${\bf{k}}(n) = {\Phi ^{ - 1}}(n - 1){\bf{u}}(n)$。由线性最小二乘估计可知,滤波器的系数估计表示为:${{\bf{\hat w}}(n) = {\Phi ^{ - 1}}(n){\bf{z}}(n)}$,把增益k(n)代入,得到

\[\begin{array}{l}
{\bf{\hat w}}(n) = {\Phi ^{ - 1}}(n){\bf{z}}(n) = {\bf{P}}(n){\bf{z}}(n) = \lambda {\bf{P}}(n){\bf{z}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= \lambda \left[ {{\lambda ^{ - 1}}{\bf{P}}(n - 1) - {\lambda ^{ - 1}}{\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1)} \right]{\bf{z}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= {\bf{P}}(n - 1){\bf{z}}(n - 1) - {\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1){\bf{z}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= {\Phi ^{ - 1}}(n - 1){\bf{z}}(n - 1) - {\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\Phi ^{ - 1}}(n - 1){\bf{z}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= {\bf{\hat w}}(n - 1) - {\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{\hat w}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= {\bf{\hat w}}(n - 1) + \left[ {{\bf{k}}(n){d^*}(n) - {\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{\hat w}}(n - 1)} \right] \\
= {\bf{\hat w}}(n - 1) + {\bf{k}}(n)\left[ {{d^*}(n) - {{\bf{u}}^{\bf{H}}}(n){\bf{\hat w}}(n - 1)} \right] \\
= {\bf{\hat w}}(n - 1) + {\bf{k}}(n)\xi (n) \\
\end{array}\]

  这就是递归最小二乘(RLS)滤波器的系数更新公式,可以看到,这个过程,并没有对输入向量相关矩阵进行直接求逆,避免了直接求逆运算带来的复杂性。还有最后一个问题没有解决。P的初始化问题,这里简单给出来:${\bf{\hat w}}(n) = 0$,${\bf{P}}(0) = {\delta ^{ - 1}}{\bf{I}}$ 。这里$\delta $是正则化参数,是为了在求解反问题或者最优化问题时解决不适定性,增加抗绕动能力时引入的,这里不做详细介绍。下面总结下递归最小二乘法的实现步骤。

\[{\bf{k}}(n) = \frac{{{\lambda ^{ - 1}}{\bf{P}}(n){\bf{u}}(n)}}{{1 + {\lambda ^{ - 1}}{{\bf{u}}^{\bf{H}}}(n){\Phi ^{ - 1}}(n - 1){\bf{u}}(n)}}\]

\[\begin{array}{l}
\xi (n) = {d^*}(n) - {{\bf{u}}^{\bf{H}}}(n){\bf{\hat w}}(n - 1) \\
{\bf{\hat w}}(n) = {\bf{\hat w}}(n - 1) + {\bf{k}}(n)\xi (n) \\
{\bf{P}}(n) = {\lambda ^{ - 1}}{\bf{P}}(n - 1) - {\lambda ^{ - 1}}{\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1) \\
\end{array}\]

  终于推导完毕,以上步骤的实现代码及工程可以在博文下面的QQ交流群的群文件中找到(TestRLS_using the matrix inversion lemma.rar)。本人水平有限,如以上证明和推导过程及代码如有错误之误,还请大家及时给予批评指正。

RLS自适应滤波器中用矩阵求逆引理来避免求逆运算的更多相关文章

  1. 自适应滤波器(Adaptive Filter)

    ======= Wikipedia的解释 ======= 自适应滤波器是能够根据输入信号自动调整性能进行数字信号处理的数字滤波器.作为对比,非自适应滤波器有静态的滤波器系数,这些静态系数一起组成传递函 ...

  2. 论文翻译:2020_A Robust and Cascaded Acoustic Echo Cancellation Based on Deep Learning

    论文地址:https://indico2.conference4me.psnc.pl/event/35/contributions/3364/attachments/777/815/Thu-1-10- ...

  3. 论文翻译:2021_Semi-Blind Source Separation for Nonlinear Acoustic Echo Cancellation

    论文地址:https://ieeexplore.ieee.org/abstract/document/9357975/ 基于半盲源分离的非线性回声消除 摘要: 当使用非线性自适应滤波器时,数值模型与实 ...

  4. 自适应滤波:最小均方误差滤波器(LMS、NLMS)

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

  5. 自适应滤波:维纳滤波器——GSC算法及语音增强

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

  6. 自适应滤波:维纳滤波器——LCMV及MVDR实现

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

  7. 自适应滤波:维纳滤波器——FIR及IIR设计

    作者:桂. 时间:2017-03-23  06:28:45 链接:http://www.cnblogs.com/xingshansi/p/6603263.html [读书笔记02] 前言 仍然是西蒙. ...

  8. 基于Opencv的自适应中值滤波函数selfAdaptiveMedianBlur()

    7.3.3 自适应滤波器 自适应中值滤波器 对于7.3.2节所讨论的中值滤波器,只要脉冲噪声的空间密度不大,性能还是可以的(根据经验需Pa和Pb小于0.2).本节将证明,自适应中值滤波器可以处理更大概 ...

  9. 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波

    原 https://blog.csdn.net/alwaystry/article/details/52756051 图像算法五:[图像小波变换]多分辨率重构.Gabor滤波器.Haar小波 2018 ...

随机推荐

  1. CNN网络架构演进:从LeNet到DenseNet

    卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀.CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF ...

  2. Docker-v17 的层级(layer)概念

    html,body { font-size: 12pt } body { font-family: Helvetica, "Hiragino Sans GB", "微软雅 ...

  3. Python数据结构之二——tuple(元组)

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 列表和元组是Python中最常见的内建序列.元组与列表一样,但是tuple一旦创建就不能修改.创建元组的语法非常简单 ...

  4. vue调试工具之 vue-devtools的安装

    这里介绍一下vue-devtools的安装方法之一: chrome浏览器的应用商店不能直接访问(需要跨域),所以直接应用商店安装的方法就行不通了. 1.到github主页去下载安装: git clon ...

  5. Redis 实践2-数据结构

    alias redis-cli='/usr/local/redis/bin/redis-cli'   vi .bashrc 编辑加入  alias redis-cli='/usr/local/redi ...

  6. js中的写出想jquery中的函数一样调用

    1.IIFE: Immediately-Invoked function Expression 函数模块自调用 2.代码实现 <!DOCTYPE html> <html lang=& ...

  7. 使用Netbeans内置的Git工具

    在 NetBeans IDE 中使用 Git 支持 NetBeans IDE 为 Git 版本控制客户端提供支持.通过利用 IDE 的 Git 支持,您可以从 IDE 内的项目中直接执行版本控制任务. ...

  8. php的内置函数debug_backtrace()与get_included_files()跟踪代码调用(Thinkphp框架举例)

    debug_backtrace() 在我们开发一个项目中,或者二开研究某个开源程序,需要对代码流程一步步去跟踪,来研究它的逻辑,才可以进行修改,达到我们的开发目的.php的内置函数debug_back ...

  9. Java数字签名——RSA算法

    数字签名:带有密钥(公钥,私钥)的消息摘要算法. 验证数据的完整性,认证数据的来源,抗否性 OSI参考模型 私钥签名,公钥验证 签名算法:RSA,DSA,ECDSA 算法1 :RSA MD,SHA两类 ...

  10. cf B. Mishka and trip (数学)

    题意   Mishka想要去一个国家旅行,这个国家共有个城市,城市通过道路形成一个环,即第i个城市和第个城市之间有一条道路,此外城市和之间有一条道路.这个城市中有个首中心城市,中心城市与每个城市(除了 ...