博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自适应滤波:矩阵求逆
阅读量:6253 次
发布时间:2019-06-22

本文共 2287 字,大约阅读时间需要 7 分钟。

作者:桂。

时间:2017-04-02  10:36:09

链接: 


 【读书笔记09】

前言

  西蒙.赫金的《自适应滤波器原理》第四版第八章:最小二乘法。因为最小二乘涉及到矩阵求逆,因为通常对于秩缺矩阵其逆是不可求的,这就需要借助广义逆矩阵。而广义逆矩阵可以借助奇异值分解(SVD,Singularly Valuable Decomposition)进行求解。

  有了这个思路,在学习各类最小二乘方法之前,对广义矩阵求逆、SVD分解进行梳理是有必要的,本文主要梳理矩阵求逆

 

一、满秩情况

  A-方阵

对于$n$x$n$的非奇异矩阵$\bf{A}$,对应的逆矩阵为:${

{\bf{A}}^{ - 1}}$.

  B-长方形阵

此时对应逆矩阵分为:左逆矩阵以及右逆矩阵。

对于矩阵A(n×m):

  • 如果A是满列秩(n>=m)对于符合LA=I的矩阵解为:${\bf{L}} = {\left( {
    {
    {\bf{A}}^H}{\bf{A}}} \right)^{ - 1}}{
    {\bf{A}}^H}$;
  • 如果A是满行秩(n<=m)对于符合AR=I的矩阵解为:${\bf{R}} = {
    {\bf{A}}^H}{\left( {
    {
    {\bf{A}}}{\bf{A}^H}} \right)^{ - 1}}$.

可以看出,当$m=n$时,${\bf{R}}={\bf{L}}={

{\bf{A}}^{ - 1}}$.

 

二、秩亏缺情况

 满秩情况中,通过矩阵左/右乘,可以实现满秩方阵,进而求逆得解,对于秩亏缺的情况,上面的求逆思路不再适用,这就需要一种更广义的定义逆矩阵的方式,也就是需要同时左、右乘以矩阵变换,才能得到满秩的特性,广义逆矩阵对满秩情况仍然有效。给出Moore-Penrose逆矩阵定义:

令$\bf{A}$是任意$m$x$n$矩阵,如果${

{\bf{A}}^+ }$满足以下四个条件,称矩阵${
{\bf{A}}^+ }$是$\bf{A}$的广义逆矩阵:

  1)${\bf{A}}{

{\bf{A}}^+ }{\bf{A}} = {\bf{A}}$;

  2)${

{\bf{A}}^+ }{\bf{A}}{
{\bf{A}}^+ } = {
{\bf{A}}^+ }$;

  3)${\bf{A}}{

{\bf{A}}^+ } = {\left( {
{\bf{A}}{
{\bf{A}}^+ }} \right)^H}$;

  4)${

{\bf{A}}^+ }{\bf{A}} = {\left( {
{
{\bf{A}}^+ }{\bf{A}}} \right)^H}$;

具体的原理推导可以参考:张贤达《矩阵分析与应用》p61~64.

容易看出:$\bf{A}$的满秩情况,广义逆矩阵仍然使用。Moore-Penrose逆矩阵是广义逆矩阵的一种形式。

 

三、求解Moore-Penrose逆矩阵

求解有多种思路,这里只分析基于SVD分解的方法。首先给出求解步骤:

背景知识

对于存在正交矩阵$\bf{U}$、$\bf{V}$,使得:

${\bf{A}}{\rm{ = }}{\bf{U\Sigma }}{

{\bf{V}}^H}$

式中:

且$r = rank({\bf{A}})$.

求解步骤

利用SVD进行广义逆矩阵求解:

${

{\bf{A}}^ + } = {\bf{V}}{
{\bf{\Sigma }}^ + }{
{\bf{U}}^H}$

其中:

事实上,对于秩为$r$,$\bf{A}$分解可简写为:

${\bf{A}} = {

{\bf{U}}_r}{
{\bf{\Sigma }}_1}{
{\bf{V}}_r}^H$

从而SVD可以简化为:

${

{\bf{A}}^ + } = {
{\bf{V}}_r}{\bf{\Lambda }}_{_{\rm{1}}}^{ - 1}{\bf{V}}_{_r}^H{
{\bf{A}}^H}$

其中${

{\bf{\Lambda }}_1} = diag\left( {\sigma _{_1}^2,\sigma _{_2}^2,...,\sigma _{_r}^2} \right)$.

因为暂时不讨论SVD,此处先直接调用,给出对应代码:

a = [ 1     7     5     1     6     4     2     7     8    10     5     4];[U,S,V] = svd(a);K = min(size(a));S_plus = [diag(1./diag(S))].^2;a_mp = 0;for i = 1:K    a_mp = a_mp+V(:,i)*S_plus(i,i)*V(:,i)'*a';end

求解的a_mp为广义逆矩阵,其结果与`pinv`指令的作用等价。

理论证明

表达式简写:

首先分析Moore-Penrose条件1

Moore-Penrose条件2与条件1证明类似;

再分析Moore-Penrose条件3:

即${\bf{A}}{

{\bf{A}}^+ } = {\left( {
{\bf{A}}{
{\bf{A}}^+ }} \right)^H}$;条件4同理。

既然广义矩阵求逆可以借助SVD分解,需要看看SVD如何分解,。

有了广义逆矩阵,。

参考:

  •  张贤达:《矩阵分析与应用》.

转载于:https://www.cnblogs.com/xingshansi/p/6658655.html

你可能感兴趣的文章
[CI] 使用Jenkins自动编译部署web应用
查看>>
SVN与TortoiseSVN实战:补丁详解
查看>>
Centes7 使用 xshell 登陆
查看>>
TestNG源代码分析:依赖管理的实现
查看>>
VMWare 安装时报错 tools-windows.msi failed报错解决办法
查看>>
java一些面试题
查看>>
如何使用dll和lib
查看>>
干货型up主
查看>>
文件与二进制流互转
查看>>
获取页面中所有dropdownlist类型控件
查看>>
【转自ITPUB】SYNONYM关于underlying table权限的小小发现
查看>>
halcon图像合并(贴图到指定位置)
查看>>
stark组件(2):提取公共视图函数、URL分发和设置别名
查看>>
android——使用Interceptor设置缓存来给服务器减负
查看>>
样式独立性的解决方案
查看>>
刷leetcode是什么样的体验?【转】
查看>>
linux内核数据结构之kfifo【转】
查看>>
c++学习笔记(新手学习笔记,如有错误请与作者联系)
查看>>
java集合复制和反转
查看>>
记录openlaw的反爬
查看>>