奇异值:

奇异值分解法是线性代数中一种重要的矩阵分解法,在信号处理、统计学等领域有重要应用。

定义:设A为m*n阶矩阵,A'表示A的转置矩阵,A'*A的n个特征值的非负平方根叫作A的奇异值。记为σi(A)。

如果把A‘*A的特征值记为λi(A‘*A),则σi(A)=sqrt(λi(A’*A))。

奇异矩阵:

奇异矩阵是线性代数的概念,就是对应的行列式等于0的矩阵。奇异矩阵的判断方法:首先,看这个矩阵是不是方阵(即行数和列数相等的矩阵。若行数和列数不相等,那就谈不上奇异矩阵和非奇异矩阵)。然后,再看此方阵的行列式|A|是否等于0,若等于0,称矩阵A为奇异矩阵;若不等于0,称矩阵A为非奇异矩阵。

同时,由|A|≠0可知矩阵A可逆,这样可以得出另外一个重要结论:可逆矩阵就是非奇异矩阵,非奇异矩阵也是可逆矩阵。如果A为奇异矩阵,则AX=0有非零解或无解。如果A为非奇异矩阵,则AX=0有且只有唯一零解。

svd

设A为m*n阶矩阵,A'表示A的转置矩阵,A'*A的n个特征值的非负平方根叫作A的奇异值。记为σi(A)。

这几天做实验涉及到奇异值分解svd(singular value

decomposition),涉及到这样的一个问题,

做PCA时候400幅图像拉成向量按列摆放,结果摆成了比如说10000*400大小的矩阵,

用到svd函数进行奇异值分解找主分量,结果MATLAB提示超出内存,后来想起还有个函数叫svds,看到别人用过,以为只是一个变体,没什么区别,就用上了,结果确实在预料之中。但是今天觉得不放心,跑到变量里面看了下,发现这个大的矩阵被分解成了

三个10000*6,6*6,400*6大小的矩阵的乘积,而不是普通的svd分解得到的10000*10000,10000*400,400*400大小的矩阵乘积,把我吓了一跳,都得到预期的结果,难不成这里还出个篓子?赶紧试验,

发现任给一个M*N大小的矩阵,都是被分解成了M*6,6*6,N*6大小的矩阵的乘积,为什么都会出现6呢?确实很纳闷。help

svds看了一下,发现SVDS(A)

返回的就是svds返回的就是最大的6个特征值及其对应的特征行向量和特征列向量,

还好,我们实验中是在svds得到列向量中再取前5个最大的列向量,这个与普通的svd得到的结果是一致的,虚惊一场。还得到了一些别的,比如

改变这个默认的设置,

比如用[u,d,v]=svds(A,10)将得到最大的10个特征值及其对应的最大特征行向量和特征列向量,

[u,d,v]=svds(A,10,0)将得到最小的10个特征值及其对应的特征行向量和特征列向量,

[u,d,v]=svds(A,10,2)将得到与2最接近的10个特征值及其对应的特征行向量和特征列向量。

总之,相比svd,svds的可定制性更强。

奇异值分解非常有用,对于矩阵A(m*n),存在U(m*m),V(n*n),S(m*n),满足A = U*S*V’。

U和V中分别是A的奇异向量,而S是A的奇异值。

AA'的正交单位特征向量组成U,特征值组成S'S,

A'A的正交单位特征向量组成V,特征值(与AA'相同)组成SS'。因此,奇异值分解和特征值问题紧密联系

定理和推论

定理:设A为m*n阶复矩阵,则存在m阶酉阵U和n阶酉阵V,使得:

A = U*S*V’

其中S=diag(σi,σ2,……,σr),σi>0

(i=1,…,r),r=rank(A)。

推论:

设A为m*n阶实矩阵,则存在m阶正交阵U和n阶正交阵V,使得

A = U*S*V’

其中S=diag(σi,σ2,……,σr),σi>0

(i=1,…,r),r=rank(A)。

说明:

1、 奇异值分解非常有用,对于矩阵A(m*n),存在U(m*m),V(n*n),S(m*n),满足A =

U*S*V’。U和V中分别是A的奇异向量,而S是A的奇异值。AA'的正交单位特征向量组成U,特征值组成S'S,A'A的正交单位特征向量组成V,特征值(与AA'相同)组成SS'。因此,奇异值分解和特征值问题紧密联系。

2、

奇异值分解提供了一些关于A的信息,例如非零奇异值的数目(S的阶数)和A的秩相同,一旦秩r确定,那么U的前r列构成了A的列向量空间的正交基。

matlab奇异值分解

函数 svd

格式 s = svd (A) %返回矩阵A的奇异值向量

[U,S,V] = svd(A) %返回一个与A同大小的对角矩阵S,两个酉矩阵U和V,且满足=

U*S*V'。若A为m×n阵,则U为m×m阵,V为n×n阵。奇异值在S的对角线上,非负且按降序排列

[U1,S1,V1]=svd(X,0) %产生A的“经济型”分解,只计算出矩阵U的前n列和n×n阶的S。

说明:

1.“经济型”分解节省存储空间。

2. U*S*V'=U1*S1*V1'。[1]

矩阵近似值

奇异值分解在统计中的主要应用为主成分分析(PCA),它是一种数据分析方法,用来找出大量数据中所隐含的“模式”,它可以用在模式识别,数据压缩等方面。PCA算法的作用是把数据集映射到低维空间中去。

数据集的特征值(在SVD中用奇异值表征)按照重要性排列,降维的过程就是舍弃不重要的特征向量的过程,而剩下的特征向量张成空间为降维后的空间。

正交矩阵

正交矩阵是实数特殊化的酉矩阵,因此总是正规矩阵。尽管我们在这里只考虑实数矩阵,

这个定义可用于其元素来自任何域的矩阵。正交矩阵毕竟是从内积自然引出的,对于复

数的矩阵这导致了归一要求。注意正交矩阵的定义:n阶‘实矩阵’ A称为正交矩阵,如果:A×A′=E(E为单位矩阵,

A'表示“矩阵A的转置矩阵”。) 若A为正交阵,则下列诸条件是等价的:

1) A 是正交矩阵

2) A×A′=E(E为单位矩阵)

3) A′是正交矩阵

4) A的各行是单位向量且两两正交

5) A的各列是单位向量且两两正交

6) (Ax,Ay)=(x,y) x,y∈R

matlab计算奇异值和正交矩阵,奇异值、奇异矩阵、SVD分解、正交矩阵相关推荐

  1. 奇异值(Singular value decomposition SVD)分解

    本文摘自两篇博客,感谢博主分享 一.原文地址:http://blog.csdn.net/wangzhiqing3/article/details/7446444 SVD分解 SVD分解是LSA的数学基 ...

  2. SVD分解——潜在语义分析LSA(I)——概率性潜在语义分析PLSA(I)

    SVD分解 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等.两个向量正交的意思是两个向量的内积为 0. 正定矩阵:如果对于所有的非零实系数向量 z z z ...

  3. 奇异值SVD分解的应用探究

    SVD分解的应用探究 一.特征值分解(EVD) 1.特征值 2.特征值分解过程 二.奇异值分解(SVD) 1.奇异值分解的形式 2.奇异值分解的方法 3.奇异值分解的价值 三.SVD分解在图像处理中的 ...

  4. matlab 求矩阵奇异值,matlab怎么求矩阵的奇异值和奇异值分解 来看看吧

    有时候我们在使用matlab进行运算的时候,想求矩阵的奇异值和进行奇异值分解,怎么操作呢,下面来分享一下方法 工具/材料 matlab 矩阵的奇异值和奇异值分解 操作方法 01 第一步我们首先需要知道 ...

  5. SVD分解的推导,理解SVD分解及矩阵奇异值的几何意义

    文章目录 SVD分解的证明推导 从本质上理解SVD分解 矩阵奇异值的几何意义 SVD分解的证明推导 理解SVD分解要解决的问题是什么? 从本质上理解SVD分解 从线性映射的矩阵表示角度,即从" ...

  6. 正交矩阵,(标准)正交基,正交投影,正交分解定理,最佳逼近定理,格拉姆-施密特方法求正交基(手算+MATLAB),QR分解(手算+MATLAB计算、分析)

    正交(orthogonality).正交集(orthogonal set).单位正交集 定义:如果向量uuu和向量vvv是相互正交的,则有:u⋅v=0u\cdot v=0u⋅v=0. 因为对于零向量, ...

  7. matlab使用出现矩阵为奇异值、接近奇异值或缩放错误。结果可能不准确。RCOND = NaN。

    使用griddata插值函数时出现以下错误 警告: 矩阵为奇异值.接近奇异值或缩放错误.结果可能不准确.RCOND = NaN. 原因:新输入参数维度(行数)与原表格参数维度(行数)不同造成的,导致有 ...

  8. 如何在matlab中表达点集,matlab练习程序(点集配准的SVD法)

    上一篇博客中我们使用了四元数法计算ICP. 本篇我们使用SVD计算ICP. 下面是<视觉slam十四讲>中的计算方法: 计算步骤如下: 我们看到,只要求出了两组点之间的旋转,平移是非常容易 ...

  9. P2 Matlab计算基础-《Matlab/Simulink与控制系统仿真》程序指令总结

    上一篇 回到目录 下一篇 <Matlab/Simulink与控制系统仿真>程序指令总结 Matlab_Simulink_BookExample 2. Matlab 计算基础 表2.1 Ma ...

最新文章

  1. 【百度地图API】如何区分地址解析和智能搜索?
  2. 【遗传优化BP网络】基于自适应遗传算法的BP神经网络的股票预测MATLAB仿真
  3. 不同虚拟机局域网Vlan之间访问
  4. 8.2-3 partprobe、tune2fs
  5. javascript闭包_通过邮寄包裹解释JavaScript闭包
  6. 2台电脑一根网线传文件_用1根网线直连2台电脑,能干嘛?
  7. 《面向对象程序设计》课程作业 (三)
  8. Storm计算结果是怎样存放的
  9. 书籍-Linux运维之道
  10. laravel mysql 悲观锁_Laravel中悲观锁 乐观锁的使用
  11. 【Python数据分析实战】豆瓣读书分析(含代码和数据集)
  12. pyqt显示圆形图片
  13. 最全面的应届毕业生落户上海指南(2021)
  14. 多元逻辑回归公式推导
  15. node.js —— express中的next( )
  16. Oracle 中的 unique index 和 non unique index的区别
  17. 我坚持写公众号的初衷是什么?
  18. 仿微信的网络聊天室项目开发【完整源码讲解】
  19. 超好用的LaTex表格生成器
  20. HBuilder 打包 iOS 客户端会产生广告标识符的问题

热门文章

  1. WakeLock finalized while still held:
  2. final,finally,finalized区别
  3. MaskRCNN环境配置
  4. $.getJSON解决跨域问题
  5. python廖雪峰教程学习:Day 1
  6. input type=“submit“ 和“button“有什么区别
  7. R语言 多元线性回归 研究年龄、身高、体重的关系
  8. 中科院回应木兰事件,当事人否认骗科研经费
  9. 节假日如何巧用社交媒体来营销——网店装修设计,网站建设
  10. 卖菜卖到月收百万的孔祥山