matlab中svd, svds, lansvd 函数

首先我们看一下wiki上关于奇异值分解的理论描述:

1. 理论描述

假设M是一个m×n阶矩阵,其中的元素全部属于K,也就是实数域或复数域。如此则存在一个分解使得

{\displaystyle M=U\Sigma V^{*},\,}M = U  \Sigma V^*, \,

其中U是m×m阶酉矩阵;Σ是m×n阶非负实数对角矩阵;而V*,即V的共轭转置,是n×n阶酉矩阵。这样的分解就称作M的奇异值分解。Σ对角线上的元素Σi,i即为M的奇异值。

常见的做法是将奇异值由大而小排列。如此Σ便能由M唯一确定了。(虽然U和V仍然不能确定。)

2. 直观的解释

在矩阵M的奇异值分解中

{\displaystyle M=U\Sigma V^{*},\,}M = U\Sigma V^*, \,
  • V的列(columns)组成一套对{\displaystyle M\,}M\,正交"输入"或"分析"的基向量。这些向量是{\displaystyle M^{*}\,M}M^*\,M特征向量
  • U的列(columns)组成一套对{\displaystyle M\,}M\,正交"输出"的基向量。这些向量是{\displaystyle MM^{*}\,}MM^*\,特征向量
  • Σ对角线上的元素是奇异值,可视为是在输入与输出间进行的标量的"膨胀控制"。这些是{\displaystyle MM^{*}\,}MM^*\,{\displaystyle M^{*}\,M}M^*\,M特征值的非零平方根,并与U和V的行向量相对应。

3. 具体的matlab运算详解如下:

矩阵奇异值分解:

假设待分解矩阵为 M(m,n), 分解获得的的矩阵为 U, S, V.

SVD matlab函数原型为:

[U, S, V] = svd(M);  则 U(m,m), S(m, n),  V(n, n).

对于Svds 函数:

[U, S, V] = svds(M);  则 U(m,6), S(6,6),  V(n, 6).  

默认情况下是取最大的6个特征值,SVDS(A) 返回的就是svds返回的就是最大的6个特征值及其对应的特征行向量和特征列向量。然而Svds是可以根据需求进行定制:

[U, S, V] = svds(M, k);  则U(m,k), S(k,k),  V(n, k).  此时svds返回的就是最大的k个特征值及其对应的特征行向量和列向量。

在PROPACK 这个库中,有一个lansvd的函数名,此函数功能类似于svds函数,但是比svds更加灵活, svds只可以返回最大的k个特征值,Lansvd还可以返回最小的K个特征值。

[U,S,V] =LANSVD(A,K,'L',...) computes the K largest singular values. 该函数计算最大的K个特征值。

[U,S,V] = LANSVD(A,K,'S',...) computesthe K smallest singular values. 计算最小的K个特征值。


Lansvd在默认情况下,也是返回最大的6个特征值及其对应的特征向量。默认情况下,Svds和Lansvd 计算出来的特征值S是一样的。


4. 总结

在matlab中,SVD, SVDS 和lansvd函数本质上都是一样的。只是SVD得到的是全分解返回的全部特征值, Svds和lansvd 是可以灵活定制的,他们默认都是返回最大的6个特征值。其中Svds可以返回最大的K个特征值, lansvd更加灵活,可以返回最大或者最小的K个特征值。


[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'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值