matlab计算奇异值和正交矩阵,奇异值、奇异矩阵、SVD分解、正交矩阵
奇异值:
奇异值分解法是线性代数中一种重要的矩阵分解法,在信号处理、统计学等领域有重要应用。
定义:设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分解、正交矩阵相关推荐
- 奇异值(Singular value decomposition SVD)分解
本文摘自两篇博客,感谢博主分享 一.原文地址:http://blog.csdn.net/wangzhiqing3/article/details/7446444 SVD分解 SVD分解是LSA的数学基 ...
- SVD分解——潜在语义分析LSA(I)——概率性潜在语义分析PLSA(I)
SVD分解 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等.两个向量正交的意思是两个向量的内积为 0. 正定矩阵:如果对于所有的非零实系数向量 z z z ...
- 奇异值SVD分解的应用探究
SVD分解的应用探究 一.特征值分解(EVD) 1.特征值 2.特征值分解过程 二.奇异值分解(SVD) 1.奇异值分解的形式 2.奇异值分解的方法 3.奇异值分解的价值 三.SVD分解在图像处理中的 ...
- matlab 求矩阵奇异值,matlab怎么求矩阵的奇异值和奇异值分解 来看看吧
有时候我们在使用matlab进行运算的时候,想求矩阵的奇异值和进行奇异值分解,怎么操作呢,下面来分享一下方法 工具/材料 matlab 矩阵的奇异值和奇异值分解 操作方法 01 第一步我们首先需要知道 ...
- SVD分解的推导,理解SVD分解及矩阵奇异值的几何意义
文章目录 SVD分解的证明推导 从本质上理解SVD分解 矩阵奇异值的几何意义 SVD分解的证明推导 理解SVD分解要解决的问题是什么? 从本质上理解SVD分解 从线性映射的矩阵表示角度,即从" ...
- 正交矩阵,(标准)正交基,正交投影,正交分解定理,最佳逼近定理,格拉姆-施密特方法求正交基(手算+MATLAB),QR分解(手算+MATLAB计算、分析)
正交(orthogonality).正交集(orthogonal set).单位正交集 定义:如果向量uuu和向量vvv是相互正交的,则有:u⋅v=0u\cdot v=0u⋅v=0. 因为对于零向量, ...
- matlab使用出现矩阵为奇异值、接近奇异值或缩放错误。结果可能不准确。RCOND = NaN。
使用griddata插值函数时出现以下错误 警告: 矩阵为奇异值.接近奇异值或缩放错误.结果可能不准确.RCOND = NaN. 原因:新输入参数维度(行数)与原表格参数维度(行数)不同造成的,导致有 ...
- 如何在matlab中表达点集,matlab练习程序(点集配准的SVD法)
上一篇博客中我们使用了四元数法计算ICP. 本篇我们使用SVD计算ICP. 下面是<视觉slam十四讲>中的计算方法: 计算步骤如下: 我们看到,只要求出了两组点之间的旋转,平移是非常容易 ...
- P2 Matlab计算基础-《Matlab/Simulink与控制系统仿真》程序指令总结
上一篇 回到目录 下一篇 <Matlab/Simulink与控制系统仿真>程序指令总结 Matlab_Simulink_BookExample 2. Matlab 计算基础 表2.1 Ma ...
最新文章
- 【百度地图API】如何区分地址解析和智能搜索?
- 【遗传优化BP网络】基于自适应遗传算法的BP神经网络的股票预测MATLAB仿真
- 不同虚拟机局域网Vlan之间访问
- 8.2-3 partprobe、tune2fs
- javascript闭包_通过邮寄包裹解释JavaScript闭包
- 2台电脑一根网线传文件_用1根网线直连2台电脑,能干嘛?
- 《面向对象程序设计》课程作业 (三)
- Storm计算结果是怎样存放的
- 书籍-Linux运维之道
- laravel mysql 悲观锁_Laravel中悲观锁 乐观锁的使用
- 【Python数据分析实战】豆瓣读书分析(含代码和数据集)
- pyqt显示圆形图片
- 最全面的应届毕业生落户上海指南(2021)
- 多元逻辑回归公式推导
- node.js —— express中的next( )
- Oracle 中的 unique index 和 non unique index的区别
- 我坚持写公众号的初衷是什么?
- 仿微信的网络聊天室项目开发【完整源码讲解】
- 超好用的LaTex表格生成器
- HBuilder 打包 iOS 客户端会产生广告标识符的问题
热门文章
- WakeLock finalized while still held:
- final,finally,finalized区别
- MaskRCNN环境配置
- $.getJSON解决跨域问题
- python廖雪峰教程学习:Day 1
- input type=“submit“ 和“button“有什么区别
- R语言 多元线性回归 研究年龄、身高、体重的关系
- 中科院回应木兰事件,当事人否认骗科研经费
- 节假日如何巧用社交媒体来营销——网店装修设计,网站建设
- 卖菜卖到月收百万的孔祥山