svd

语法

svd(obj, [fullMatrices=true], [computeUV=true])

参数

obj 是一个矩阵。

fullMatrices 是一个布尔值,其默认值为true。

computeUV 是一个布尔值,默认值为true。

详情

计算矩阵的奇异分解。

假设输入矩阵A的行数为m,列数为n:

  • 若fullMatrices=true,结果为一个m*m矩阵U(以左奇异向量为列的矩阵),一个n*n矩阵V(以右奇异向量为行的矩阵)和一个向量s(按降序排列的奇异值),并满足以下条件:A=U*S*V。其中S是一个m*n矩阵,其对角线元素为s。

  • 若fullMatrices=false,S矩阵仅保留有奇异值的那部分方阵,即矩阵S为k*k,其中k=min(m,n),并将与删除的这些行或列相乘的U与V中的行或列删除。矩阵U为m*k,矩阵V为k*n。

  • 若computeUV=false时,只返回向量s。

例子

$ m=matrix([[2,1,0],[1,3,1],[0,1,4],[1,2,3]]);
$ U,s,V=svd(m);
$ U;

#0

#1

#2

-0.233976

0.57735

-0.782254

-0.560464

0.57735

0.593756

-0.79444

-0.57735

-0.188498

$ s;
[6.029042,3,1.284776]

$ V;

#0

#1

#2

#3

-0.170577

-0.449459

-0.620036

-0.620036

0.57735

0.57735

-0.57735

0

-0.755582

0.630862

-0.12472

-0.12472

-0.258199

-0.258199

-0.516398

0.774597

$ U,s,V=svd(m,fullMatrices=false);
$ V;

#0

#1

#2

#3

-0.170577

-0.449459

-0.620036

-0.620036

0.57735

0.57735

-0.57735

0

-0.755582

0.630862

-0.12472

-0.12472