【DQ Robotics】基于SVD的全秩矩阵逆

基于SVD的全秩矩阵逆

英文原文:

As you might remember from your undergraduate-level courses, every real matrix can be decomposed in its singular-value decomposition (SVD) as follows

A = U Σ V T A = U \Sigma V^T A=UΣVT

where U ∈ R m × m U \in \mathbb{R}^{m \times m} URm×mand V ∈ R n × n V \in \mathbb{R}^{n \times n} VRn×n are orthonormal matrices (i.e., they are square, full rank, and their inverses are given by U U T = I m × m U U^T = I_{m \times m} UUT=Im×mand V V T = V T V = I n × n V V^T = V^T V = I_{n \times n} VVT=VTV=In×n). Moreover, Σ \Sigma Σ is a (rectangular) diagonal matrix composed of the singular values of the matrix given by σ i \sigma_i σifor i = 1 , … , m i = 1, \dots, m i=1,,m, ordered from the largest singular value towards the smallest singular value. Note that singular values are always non-negative.

Note: All singular values of a given matrix will be non-zero when the matrix has full rank.

中文翻译:

如你在本科阶段课程中可能学到的那样,每个实矩阵都可以通过其奇异值分解 (SVD) 表示如下:

A = U Σ V T A = U \Sigma V^T A=UΣVT

其中, U ∈ R m × m U \in \mathbb{R}^{m \times m} URm×m V ∈ R n × n V \in \mathbb{R}^{n \times n} VRn×n是正交矩阵(即,它们是方阵,满秩,且它们的逆由 U U T = I m × m U U^T = I_{m \times m} UUT=Im×m V V T = V T V = I n × n V V^T = V^T V = I_{n \times n} VVT=VTV=In×n给出)。此外, Σ \Sigma Σ是一个(矩形的)对角矩阵,由矩阵的奇异值组成,记为 σ i \sigma_i σi i = 1 , … , m i = 1, \dots, m i=1,,m,按从最大奇异值到最小奇异值的顺序排列。请注意,奇异值总是非负的。

注意:当矩阵是满秩时,其所有奇异值都将是非零的。

解释

奇异值分解(SVD)是一种重要的矩阵分解方法,用于将一个矩阵分解为三个部分:一个正交矩阵 U U U、一个对角矩阵 Σ \Sigma Σ(包含矩阵的奇异值)和另一个正交矩阵 V V V。这种分解具有许多应用,如数据降维、矩阵逆计算和信号处理等。

  1. 正交矩阵 U U U V V V

    • 正交矩阵的特点是它们的行和列是相互正交的(垂直的),且单位长度。
    • 正交矩阵的逆等于它的转置,即 U U T = I U U^T = I UUT=I V V T = I V V^T = I VVT=I,这表明它们是满秩矩阵。
  2. 对角矩阵 Σ \Sigma Σ

    • Σ \Sigma Σ 包含了原矩阵的奇异值,这些奇异值是按从大到小的顺序排列的。
    • 奇异值总是非负的,当矩阵是满秩时,所有奇异值都是非零的。
    • 如果矩阵不是满秩,那么会有一些奇异值为零,这表示矩阵的某些行或列之间存在线性依赖。
  3. 满秩矩阵的性质:

    • 如果矩阵是满秩的,那么它的所有奇异值都是非零的。
    • 满秩意味着矩阵的行或列是线性独立的,能够代表完整的信息。

这种奇异值分解可以帮助我们分析矩阵的结构,特别是在矩阵可能是奇异或非方形的情况下,SVD 提供了计算伪逆和解决不适定问题的一种方法。

右伪逆

英文原文:

With these properties, a right pseudo-inverse can be defined for any matrix for which all singular values are non-zero. The right pseudo-inverse is

A † ≜ V Σ inv U T . A^\dagger \triangleq V \Sigma^{\text{inv}} U^T. AVΣinvUT.

where Σ inv \Sigma^{\text{inv} } Σinv is a compatible matrix where we use the reciprocal of the singular values. For example, for a square matrix we have

Σ inv ≜ [ 1 σ 1 0 ⋯ 0 0 1 σ 2 ⋯ 0 0 0 ⋱ 0 0 0 0 1 σ m ] \Sigma^{\text{inv}} \triangleq \begin{bmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ 0 & 0 & \ddots & 0 \\ 0 & 0 & 0 & \frac{1}{\sigma_m} \end{bmatrix} Σinv σ110000σ21000000σm1
and for a rectangular matrix
Σ inv ≜ [ 1 σ 1 0 ⋯ 0 0 1 σ 2 ⋯ 0 0 0 ⋱ 0 0 0 0 1 σ m 0 0 0 0 ] \Sigma^{\text{inv}} \triangleq \begin{bmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ 0 & 0 & \ddots & 0 \\ 0 & 0 & 0 & \frac{1}{\sigma_m} \\ 0 & 0 & 0 & 0 \end{bmatrix} Σinv σ1100000σ2100000000σm10

中文翻译:

基于这些性质,可以为所有奇异值均非零的矩阵定义右伪逆。右伪逆定义为:

A † ≜ V Σ inv U T . A^\dagger \triangleq V \Sigma^{\text{inv}} U^T. AVΣinvUT.

其中, Σ inv \Sigma^{\text{inv} } Σinv 是一个与 Σ \Sigma Σ 兼容的矩阵,其中每个奇异值取倒数。
例如,对于方阵,我们有

Σ inv ≜ [ 1 σ 1 0 ⋯ 0 0 1 σ 2 ⋯ 0 0 0 ⋱ 0 0 0 0 1 σ m ] \Sigma^{\text{inv}} \triangleq \begin{bmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ 0 & 0 & \ddots & 0 \\ 0 & 0 & 0 & \frac{1}{\sigma_m} \end{bmatrix} Σinv σ110000σ21000000σm1
对于矩形矩阵
Σ inv ≜ [ 1 σ 1 0 ⋯ 0 0 1 σ 2 ⋯ 0 0 0 ⋱ 0 0 0 0 1 σ m 0 0 0 0 ] \Sigma^{\text{inv}} \triangleq \begin{bmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ 0 & 0 & \ddots & 0 \\ 0 & 0 & 0 & \frac{1}{\sigma_m} \\ 0 & 0 & 0 & 0 \end{bmatrix} Σinv σ1100000σ2100000000σm10

解释

这段文字解释了如何利用奇异值分解(SVD)来构造矩阵的伪逆(pseudo-inverse)。伪逆是一种“广义逆”,特别适用于非方阵和奇异矩阵的情况,即矩阵可能没有标准的逆。

  1. 伪逆的构造方法

    • 给定一个矩阵 A A A,我们可以将其分解为 A = U Σ V T A = U \Sigma V^T A=UΣVT
    • 要构造 A A A 的伪逆 A † A^\dagger A,我们需要使用 V V V Σ inv \Sigma^{\text{inv}} Σinv U T U^T UT
    • 这里, Σ inv \Sigma^{\text{inv}} Σinv 是对角矩阵 Σ \Sigma Σ 的“逆”,其中包含 Σ \Sigma Σ 中奇异值的倒数。
  2. 对角矩阵 Σ inv \Sigma^{\text{inv}} Σinv

    • 如果 Σ \Sigma Σ 中的奇异值是 σ 1 , σ 2 , … , σ m \sigma_1, \sigma_2, \dots, \sigma_m σ1,σ2,,σm,那么 Σ inv \Sigma^{\text{inv}} Σinv 的对角线上将是它们的倒数 1 σ 1 , 1 σ 2 , … , 1 σ m \frac{1}{\sigma_1}, \frac{1}{\sigma_2}, \dots, \frac{1}{\sigma_m} σ11,σ21,,σm1
    • 这要求所有奇异值 σ i \sigma_i σi 非零,否则无法取倒数。因此,仅当矩阵满秩时,才可以直接使用这种方式计算伪逆。

总之,右伪逆是通过SVD构造的一种广义逆矩阵,对于矩阵奇异值均为非零的满秩矩阵,它是存在且唯一的。

当矩阵为矩形时如何构造其伪逆的对角矩阵 Σ inv \Sigma^{\text{inv}} Σinv

  1. 矩形矩阵的奇异值分解

    • 对于一个矩形矩阵 A A A,奇异值分解 (SVD) 仍然适用,可以将其分解为 A = U Σ V T A = U \Sigma V^T A=UΣVT
    • 其中 Σ \Sigma Σ 是一个对角矩阵,但它的大小可能并不是方阵,而是一个矩形(例如 m × n m \times n m×n)。
  2. 伪逆矩阵 Σ inv \Sigma^{\text{inv}} Σinv 的构造

    • A A A 是矩形时, Σ inv \Sigma^{\text{inv}} Σinv的构造略有不同。
    • 对于所有非零的奇异值 σ i \sigma_i σi,我们在对角线上填入其倒数 1 σ i \frac{1}{\sigma_i} σi1
    • 如果 A A A m × n m \times n m×n 的矩阵,并且 m ≠ n m \neq n m=n,则 Σ inv \Sigma^{\text{inv}} Σinv的大小将与 Σ \Sigma Σ兼容,但可能在矩阵的末尾出现额外的零行或零列。
  3. 作用

    • 通过将 Σ \Sigma Σ 中的奇异值取倒数填入 Σ inv \Sigma^{\text{inv}} Σinv 中,我们可以构造矩形矩阵的伪逆 A † = V Σ inv U T A^\dagger = V \Sigma^{\text{inv}} U^T A=VΣinvUT
    • 这种伪逆在最小二乘解、数据降维等领域有广泛应用,特别是在原矩阵没有标准逆的情况下。

总结来说,这种方法可以让我们在矩形矩阵上应用伪逆,即使矩阵不满秩或不为方阵,这在实际计算中具有重要意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shell脚本6 -- 条件判断if

声明: 本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(4)脚本与用户交互以及if条件判断】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题&#xff0c…

ks 小程序sig3

前言 搞了app版的快手之后 (被风控麻了) 于是试下vx小程序版的 抓包调试 小程序抓包问题 网上很多教程, github也有开源的工具代码 自行搜索 因为我们需要调试代码,所以就用了下开源的工具 (可以用chrome的F12功能&a…

hive 统计各项目下排名前5的问题种类

实现指定某项目下的数据效果图如下所示: 其中 ABCDE 为前5名的问题种类,其中A问题有124个(出现了124次) 数据说明: 整个数据集 包含很多项目一个项目 包含很多问题一个问题 选项 可认为是 类别值,所有出…

如何解决将长视频转换为易于处理的 Spacetime Patch 的问题?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 将长视频转换为易于处理的 Spacetime Patch(时空补丁)是一项挑战,尤其是当视频内容复杂或包含长时间连续场景时。在计算机视觉和视频分析等领域,Spacetim…

[ACTF2020]Upload 1--详细解析

信息收集 题目告诉我们是一道upload,也就是文件上传漏洞题目。 进入界面,是一个灯泡,将鼠标放在图标上就会出现文件上传的相应位置: 思路 文件上传漏洞,先看看有没有前端校验。 在js源码中找到了前端校验&#xff…

机器学习基础06

目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项(曼哈顿距离) 2.3.2…

可认证数据资产合约标准协议(CMIDA-1)意见征集

标准背景 数据资产具备多维度的属性,涵盖行业特性、状态信息、资产类型、存储格式等。数据资产在不同流通主体之间可理解、可流通、可追溯、可信任的重要前提之一是存在统一的标准,缺失统一的标准,数据混乱冲突、一数多源、多样多类等问题将…

为什么 Vue3 封装 Table 组件丢失 expose 方法呢?

在实际开发中,我们通常会将某些常见组件进行二次封装,以便更好地实现特定的业务需求。然而,在封装 Table 组件时,遇到一个问题:Table 内部暴露的方法,在封装之后的组件获取不到。 代码展示为: …

Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍

文章目录 1. Dolby TrueHD特点总结 2. Dolby Digital Plus (E-AC-3)特点总结 Dolby TrueHD 与 Dolby Digital Plus (E-AC-3) 的对比 Dolby TrueHD和Dolby Digital Plus (E-AC-3) 是两种高级的杜比音频编码格式,常用于蓝光影碟、流媒体、影院等高品质音频传输场景。它…

Python Pillow图像编辑

Pillow简介 Pillow 不仅是 PIL 库的“复制版”,而且它又在 PIL 库的基础上增加了许多新的特性。Pillow 发展至今,已经成为了比 PIL 更具活力的图像处理库。 Pillow 的初衷只是想作为 PIL 库的分支和补充,如今它已是“青出于蓝而胜于蓝”。 …

1+X应急响应(网络)系统信息收集分析:

系统信息收集分析: 系统启动项和计划任务分析: 系统进程,服务分析: 内存取证: 系统崩溃转储:

找不到vcruntime140.dll怎么办,彻底解决vcruntime140.dll丢失的5种方法

当计算机系统中无法找到vcruntime140.dll这个特定的动态链接库文件时,可能会引发一系列运行问题,具体表现形式多样且影响范围较广。对于依赖于该文件运行的各类软件应用来说,缺失vcruntime140.dll将直接导致程序无法正常启动或执行&#xff0…

Redis学习 ——缓存

文章目录 一、Redis缓存的介绍二、Redis缓存问题2.1 缓存穿透2.2 缓存击穿2.3 缓存雪崩2.4 双写一致性2.5 缓存持久化RDBAOF 三、缓存数据管理3.1 数据过期策略3.2 数据淘汰策略 一、Redis缓存的介绍 我们在日常的代码编写中比较少使用到Redis,但是如果涉及到了比较…

“乐鑫组件注册表”简介

当启动一个新的开发项目时,开发者们通常会利用库和驱动程序等现有的代码资源。这种做法不仅节省时间,还简化了项目的维护工作。本文将深入探讨乐鑫组件注册表的概念及其核心理念,旨在指导您高效地使用和贡献组件。 概念解析 ESP-IDF 的架构…

视觉SLAM--经典视觉SLAM框架

整个视觉SLAM流程主要包括以下步骤: 1、传感器信息读取:在视觉SLAM中主要为相机图像信息的读取和预处理。 2、前端视觉里程计:估算相邻图像间相机的运动,以及局部地图的样子。 3、后端(非线性)优化&#…

Ajax的相关内容

一、Ajax的使用步骤 1.创建XML对象 const xhrnew XMLHttpRequest(); 2.监听事件,处理响应 3.准备发送请求 true表示异步 ajax中永远是异步,永远是true 4.发送请求 二、GET和POST请求 三、JSON的三种形式 四、JSON的方法 五、跨域 六、XHR的属性和方法…

有限状态机(续)

一、添加刀光和场景 1、资源链接: 武器刀光:https://assetstore.unity.com/packages/tools/particles-effects/melee-weapon-trail-1728 场景:https://assetstore.unity.com/packages/3d/environments/fantasy/casual-tiny-environment-ju…

2024年11月16日 星期六 重新整理Go技术

今日格言 坚持每天进步一点点~ 一个人也可以是一个团队~ 学习全栈开发, 做自己喜欢的产品~~ 简介 大家好, 我是张大鹏, 今天是2024年11月16日星期六, 很高兴在这里给大家分享技术. 今天又是休息的一天, 做了很多的思考, 整理了自己掌握的技术, 比如Java, Python, Golang,…

【Linux】软件包管理器yum、编辑器vim

Linux 1.源码安装 和 软件包安装2.软件包管理器yum1.什么是包管理器 3.vim编辑器1.vim常见的三种模式2.vim命令模式:命令集3.vim底行模式:命令集4.使用vim的小技巧5.vim配置 1.源码安装 和 软件包安装 在Linux下安装软件,一个通常的办法是下…

高项 - 项目进度管理

个人总结,仅供参考,欢迎加好友一起讨论 博文更新参考时间点:2024-12 高项 - 章节与知识点汇总:点击跳转 文章目录 高项 - 项目进度管理进度管理ITO规划监控 管理基础项目进度计划的定义和总要求管理新实践用户故事(补…