主要内容

圣言会

奇异值分解

描述

例子

年代=圣言(一个返回奇异值的矩阵一个按降序排列。

例子

U年代V= svd(一个对矩阵进行奇异值分解一个,以致于A = u * s * v '

例子

___= svd(一个“经济学”)的经济规模分解一个使用前面的输出参数组合之一。如果一个是一个——- - - - - -n矩阵,然后:

  • M > n-只有第一个nU计算,且年代n——- - - - - -n

  • M = n- - - - - -圣言(A,“经济学”)等于圣言(A)

  • M < n-只有第一个V计算,且年代——- - - - - -

经济规模的分解从奇异值的对角线矩阵中删除额外的零行或零列,年代,以及其中的列UV把表达式中的零相乘A = u * s * v '.删除这些零和列可以缩短执行时间并减少存储需求,而不会影响分解的准确性。

例子

___= svd(一个, 0)的不同经济规模分解——- - - - - -n矩阵一个

  • M > n- - - - - -圣言(0)等于圣言(A,“经济学”)

  • M <= n- - - - - -圣言(0)等于圣言(A)

___= svd(___outputForm可选地指定奇异值的输出格式。您可以将此选项与前面的任何输入或输出参数组合一起使用。指定“向量”以列向量的形式返回奇异值,或“矩阵”返回对角矩阵中的奇异值。

例子

全部折叠

计算一个全秩矩阵的奇异值。

A = [1 0 1;-1 -2 0;0 1 -1]
一个=3×31 0 1 -1 -2 0 0 1 -1
s = svd(A)
s =3×12.4605 1.6996 0.2391

求一个矩形矩阵的奇异值分解一个

A = [1 2;3 4;5 6;7 8]
一个=4×21 2 3 4 5 6 7 8
[U,S,V] = svd(A)
U =4×4-0.1525 -0.8226 -0.3945 -0.3800 -0.3499 -0.4214 0.2428 0.8007 -0.5474 -0.0201 0.6979 -0.4614 -0.7448 0.3812 -0.5462 0.0407
S =4×214.2691 0 0 0.6268 0 0 0 0
V =2×2-0.6414 0.7672 -0.7672 -0.6414

确认关系A = u * s * v ',在机器精度范围内。

U * * V”
ans =4×21.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000

计算一个矩形矩阵的完整和经济规模的分解。

A = [1 2;3 4;5 6;7 8]
一个=4×21 2 3 4 5 6 7 8
[U,S,V] = svd(A)
U =4×4-0.1525 -0.8226 -0.3945 -0.3800 -0.3499 -0.4214 0.2428 0.8007 -0.5474 -0.0201 0.6979 -0.4614 -0.7448 0.3812 -0.5462 0.0407
S =4×214.2691 0 0 0.6268 0 0 0 0
V =2×2-0.6414 0.7672 -0.7672 -0.6414
[U,S,V] = svd;“经济学”
U =4×2-0.1525 -0.8226 -0.3499 -0.4214 -0.5474 -0.0201 -0.7448 0.3812
S =2×214.2691 0 0 0.6268
V =2×2-0.6414 0.7672 -0.7672 -0.6414

一个4×2的矩阵,圣言(A,“经济学”)返回更少的列U更少的行数年代与完全分解相比。多出几行零年代都被排除在外,连同相应的列在U它会与表达式中的这些零相乘A = u * s * v '

创建一个6乘6的魔法方阵并计算奇异值分解。默认情况下,圣言会当指定多个输出时,返回对角矩阵中的奇异值。

A =魔术(6);[U,S,V] = svd(A)
U =6×6-0.4082 0.5574 0.0456 -0.4182 0.3092 0.5000 -0.4082 -0.2312 0.6301 -0.2571 -0.5627 -0.0000 -0.4082 0.4362 0.2696 0.5391 0.1725 -0.5000 -0.4082 -0.3954 -0.2422 -0.4590 0.3971 -0.5000 -0.4082 0.1496 -0.6849 0.0969 -0.5766 -0.4082 -0.5166 -0.0182 0.4983 0.2604 0.5000
S =6×6111.0000 0000 00 50.6802 0000 00 34.3839 0000 00 10.1449 0000 0000 5.5985 0000 0000 00 0.0000
V =6×6-0.4082 0.6234 -0.3116 0.2495 0.2511 -0.4714 -0.4082 -0.6282 0.3425 0.1753 0.2617 -0.4714 -0.4082 -0.4014 -0.7732 -0.0621 -0.1225 0.2357 -0.4082 0.1498 0.2262 -0.4510 0.5780 0.4714 -0.4082 0.1163 0.2996 0.6340 -0.3255 0.4714 -0.4082 0.1401 0.2166 -0.5457 -0.6430 -0.2357

指定“向量”选项返回列向量中的奇异值。

[U,S,V] = svd;“向量”
U =6×6-0.4082 0.5574 0.0456 -0.4182 0.3092 0.5000 -0.4082 -0.2312 0.6301 -0.2571 -0.5627 -0.0000 -0.4082 0.4362 0.2696 0.5391 0.1725 -0.5000 -0.4082 -0.3954 -0.2422 -0.4590 0.3971 -0.5000 -0.4082 0.1496 -0.6849 0.0969 -0.5766 -0.4082 -0.5166 -0.0182 0.4983 0.2604 0.5000
S =6×1111.0000 50.6802 34.3839 10.1449 5.5985 0.0000
V =6×6-0.4082 0.6234 -0.3116 0.2495 0.2511 -0.4714 -0.4082 -0.6282 0.3425 0.1753 0.2617 -0.4714 -0.4082 -0.4014 -0.7732 -0.0621 -0.1225 0.2357 -0.4082 0.1498 0.2262 -0.4510 0.5780 0.4714 -0.4082 0.1163 0.2996 0.6340 -0.3255 0.4714 -0.4082 0.1401 0.2166 -0.5457 -0.6430 -0.2357

如果指定一个输出参数,例如S = svd(A,然后圣言会默认情况下,将行为切换为返回列向量中的奇异值。在这种情况下,您可以指定“矩阵”选项以对角矩阵的形式返回奇异值。

使用奇异值分解的结果来确定矩阵的秩、列空间和零空间。

A = [2 0 2;0 10 0;0 0 0]
一个=3×32 0 2 0 1 0 0 0
[U,S,V] = svd(A)
U =3×31 0 0 0 1 0 0 0 1
S =3×32.8284 000 1.0000 0000
V =3×30.7071 0 -0.7071 0 1.0000 0 0.7071 0 0.7071

使用非零奇异值的数量计算秩。

s = diag(s);rank_A = nnz(s)
rank_A = 2

的列空间计算一个标准正交基一个的列U对应于非零奇异值。

column_base = U(:,logical(s))
column_basis =3×21 0 0 1 0 0

计算的零空间的正交基一个的列V对应于等于零的奇异值。

null_basis = V(: ~s)
null_basis =3×1-0.7071 0 0.7071

的函数排名奥尔特,提供方便的方法来计算这些量。

输入参数

全部折叠

输入矩阵。一个大小可以是正方形或矩形。

数据类型:|
复数支持:金宝app是的

奇异值的输出格式,指定为以下值之一:

  • “向量”- - - - - -年代是一个列向量。这是指定一个输出时的默认行为,S = svd(X

  • “矩阵”- - - - - -年代是一个对角矩阵。这是指定多个输出时的默认行为,[U,S,V] = svd(X)

例子:[U,S,V] = svd(X,"vector")返回年代作为列向量而不是对角矩阵。

例子:S = svd(X,“矩阵”)返回年代用对角矩阵代替列向量。

数据类型:字符|字符串

输出参数

全部折叠

左奇异向量,作为矩阵的列返回。

  • 对于一个——- - - - - -n矩阵一个M > n,即经济规模的分解圣言(A,“经济学”)而且圣言(0)只计算第一个nU.在这种情况下,的列U是正交的U是一个——- - - - - -n满足的矩阵 U H U n

  • 对于完全分解,圣言(A)返回U作为一个——- - - - - -满足的酉矩阵 U U H U H U .的列U对应于的非零奇异值形成一组标准正交基向量一个

不同的机器和MATLAB版本®可以产生不同的奇异向量,在数值上仍然是准确的。中的对应列U而且V可以翻转它们的符号,因为这并不影响表达式的值A = u * s * v '

奇异值,作为对角矩阵或列向量返回。奇异值是非负的,并按递减顺序返回。

如果一个是一个——- - - - - -n矩阵,年代是对角矩阵,那么大小是年代如下:

  • 经济规模的分解圣言(A,“经济学”)返回年代作为一个有序的方阵min ([m, n])

  • 对于完全分解,圣言(A)返回年代尺寸一样的一个

  • 圣言(0)

    • 如果M > n,然后年代方阵是有序的吗min ([m, n])

    • 如果M < n,然后年代尺寸和一个

此外,在年代返回一个列向量或对角矩阵取决于你如何调用圣言会以及是否指定outputForm选择:

  • 如果你打电话圣言会使用一个输出或指定“向量”选项,然后年代是一个列向量。

  • 如果你打电话圣言会或指定多个输出“矩阵”选项,然后年代是一个对角矩阵。

根据您指定的是一个输出还是多个输出,圣言会可以返回不同的奇异值,但数值仍然准确。

右奇异向量,作为矩阵的列返回。

  • 对于一个——- - - - - -n矩阵一个M < n,经济分解圣言(A,“经济学”)只计算第一个V.在这种情况下,的列V是正交的V是一个n——- - - - - -满足的矩阵 V H V

  • 对于完全分解,圣言(A)返回V作为一个n——- - - - - -n满足的酉矩阵 V V H V H V n .的列V对应于的零空间的非零奇异值,形成一组标准正交基向量一个

不同的机器和MATLAB版本可以产生不同的奇异向量,它们在数值上仍然是准确的。中的对应列U而且V可以翻转它们的符号,因为这并不影响表达式的值A = u * s * v '

扩展功能

版本历史

R2006a之前介绍

全部展开

R2021b的行为发生了变化