圣言会
奇异值分解
描述
[___= svd(
的经济规模分解一个
“经济学”)一个
使用前面的输出参数组合之一。如果一个
是一个米
——- - - - - -n
矩阵,然后:
M > n
-只有第一个n
列U
计算,且年代
是n
——- - - - - -n
.M = n
- - - - - -圣言(A,“经济学”)
等于圣言(A)
.M < n
-只有第一个米
列V
计算,且年代
是米
——- - - - - -米
.
经济规模的分解从奇异值的对角线矩阵中删除额外的零行或零列,年代
,以及其中的列U
或V
把表达式中的零相乘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是的
outputForm
- - - - - -奇异值的输出格式
“向量”
|“矩阵”
奇异值的输出格式,指定为以下值之一:
“向量”
- - - - - -年代
是一个列向量。这是指定一个输出时的默认行为,S = svd(X
.“矩阵”
- - - - - -年代
是一个对角矩阵。这是指定多个输出时的默认行为,[U,S,V] = svd(X)
.
例子:[U,S,V] = svd(X,"vector")
返回年代
作为列向量而不是对角矩阵。
例子:S = svd(X,“矩阵”)
返回年代
用对角矩阵代替列向量。
数据类型:字符
|字符串
输出参数
U
-左奇异向量
矩阵
左奇异向量,作为矩阵的列返回。
对于一个
米
——- - - - - -n
矩阵一个
与M > n
,即经济规模的分解圣言(A,“经济学”)
而且圣言(0)
只计算第一个n
列U
.在这种情况下,的列U
是正交的U
是一个米
——- - - - - -n
满足的矩阵 .对于完全分解,
圣言(A)
返回U
作为一个米
——- - - - - -米
满足的酉矩阵 .的列U
对应于的非零奇异值形成一组标准正交基向量一个
.
不同的机器和MATLAB版本®可以产生不同的奇异向量,在数值上仍然是准确的。中的对应列U
而且V
可以翻转它们的符号,因为这并不影响表达式的值A = u * s * v '
.
年代
-奇异值
对角矩阵|列向量
奇异值,作为对角矩阵或列向量返回。奇异值是非负的,并按递减顺序返回。
如果一个
是一个米
——- - - - - -n
矩阵,年代
是对角矩阵,那么大小是年代
如下:
经济规模的分解
圣言(A,“经济学”)
返回年代
作为一个有序的方阵min ([m, n])
.对于完全分解,
圣言(A)
返回年代
尺寸一样的一个
.为
圣言(0)
:如果
M > n
,然后年代
方阵是有序的吗min ([m, n])
.如果
M < n
,然后年代
尺寸和一个
.
此外,在年代
返回一个列向量或对角矩阵取决于你如何调用圣言会
以及是否指定outputForm
选择:
如果你打电话
圣言会
使用一个输出或指定“向量”
选项,然后年代
是一个列向量。如果你打电话
圣言会
或指定多个输出“矩阵”
选项,然后年代
是一个对角矩阵。
根据您指定的是一个输出还是多个输出,圣言会
可以返回不同的奇异值,但数值仍然准确。
V
-右奇异向量
矩阵
右奇异向量,作为矩阵的列返回。
对于一个
米
——- - - - - -n
矩阵一个
与M < n
,经济分解圣言(A,“经济学”)
只计算第一个米
列V
.在这种情况下,的列V
是正交的V
是一个n
——- - - - - -米
满足的矩阵 .对于完全分解,
圣言(A)
返回V
作为一个n
——- - - - - -n
满足的酉矩阵 .的列V
做不对应于的零空间的非零奇异值,形成一组标准正交基向量一个
.
不同的机器和MATLAB版本可以产生不同的奇异向量,它们在数值上仍然是准确的。中的对应列U
而且V
可以翻转它们的符号,因为这并不影响表达式的值A = u * s * v '
.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
代码生成使用的是不同的
圣言会
实现比MATLAB使用。由于奇异值分解不是唯一的,左右奇异向量可能与MATLAB计算的奇异向量不同。代码生成不支持此函数的稀疏矩阵输入。金宝app
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
使用注意事项和限制:
代码生成使用的是不同的
圣言会
实现比MATLAB使用。由于奇异值分解不是唯一的,左右奇异向量可能与MATLAB计算的奇异向量不同。当输入矩阵包含一个非有限值时,生成的代码不会发出错误。相反,输出包含
南
值。代码生成不支持此函数的稀疏矩阵输入。金宝app
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
本功能完全支持GPU阵列。金宝app有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存对大型数组进行分区。
使用注意事项和限制:
如果输入矩阵
一个
为矩形,则必须使用“经济学”
选择。的语法
[__] = svd(A,0)
不支持。金宝app
有关更多信息,请参见运行MATLAB函数与分布式阵列(并行计算工具箱).
版本历史
R2006a之前介绍R2021b:指定输出格式
指定outputForm
作为“向量”
或“矩阵”
控制是否圣言会
以向量或矩阵的形式返回输出参数。对于大型分解,将输出作为向量返回可以节省内存并提高效率。
R2021b:圣言会
返回南
对于非有限输入
R2021b的行为发生了变化
圣言会
返回南
当输入包含非有限值(正
或南
).在此之前,圣言会
当输入包含非有限值时抛出错误。
第一MATLAB
海脂循环匹配函数对应求解MATLAB:
Esegui il commanmando inserendolo nella finestra di commanmando MATLAB。我的浏览器web不支持和MATLAB金宝app。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。