圣言会
奇异值分解
描述
[___) =圣言(
的经济规模分解一个
“经济学”)一个
使用前面的输出参数组合之一。如果一个
是一个米
——- - - - - -n
矩阵,然后:
m > n
-只有第一个n
列U
计算,年代
是n
——- - - - - -n
.m = n
- - - - - -圣言(A,“经济学”)
相当于圣言(A)
.m < n
-只有第一个米
列V
计算,年代
是米
——- - - - - -米
.
经济规模分解从奇异值的对角线矩阵中去除多余的行或列零,年代
,以及其中任何一个的列U
或V
它乘以表达式中的这些0一个= U * * V '
.删除这些零和列可以提高执行时间并减少存储需求,而不会影响分解的准确性。
[___) =圣言(
产生不同的经济规模分解一个
, 0)米
——- - - - - -n
矩阵一个
:
m > n
- - - - - -圣言(0)
相当于圣言(A,“经济学”)
.m < = n
- - - - - -圣言(0)
相当于圣言(A)
.
不建议使用此语法。使用“经济学”
选项。
[___) =圣言(___,
可选地指定奇异值的输出格式。可以将此选项用于前面的任何输入或输出参数组合。指定outputForm
)“向量”
以列向量形式返回奇异值,或“矩阵”
返回对角矩阵中的奇异值。
例子
矩阵的奇异值
计算一个满秩矩阵的奇异值。
A = [1 0 1;1 2 0;0 1 1]
一个=3×31 0 1 -1 -2 0 0 1 -1
s =圣言(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, V] =圣言(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 * * V '
,在机器精度之内。
U * * V”
ans =4×21.0000 2.000 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, V] =圣言(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, V) =圣言(,“经济学”)
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
里面的行数更少年代
与完全分解相比。额外的0行年代
都被排除在外,以及U
它将与表达式中的0相乘一个= U * * V '
.
控制奇异值输出格式
创建一个6 × 6的神奇方阵并计算奇异值分解。默认情况下,圣言会
当指定多个输出时,返回对角矩阵中的奇异值。
一个=魔法(6);[U, V] =圣言(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.0000 -0.4082 -0.5166 -0.0182 0.4983 0.2604 0.5000
S =6×6111.0000 0000 0 50.6802 0000 0 34.3839 0000 00 10.1449 0000 00 5.5985 0000 000 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, V) =圣言(,“向量”)
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.0000 -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 =圣言(A)
,然后圣言会
切换行为,默认情况下返回列向量中的奇异值。在这种情况下,您可以指定“矩阵”
选项以对角矩阵的形式返回奇异值。
矩阵的秩、列空间和零空间
利用奇异值分解的结果来确定矩阵的秩、列空间和零空间。
A = [2 0 2;0 1 0;0 0 0)
一个=3×32 0 2 0 1 0 0 0 0
[U, V] =圣言(A)
U =3×31 0 0 0 1 0 0 0 1
S =3×32.8284 000 1.0000 000
V =3×30.7071 0 -0.7071 0 1.0000 0 0.7071 0 0.7071
使用非零奇异值的数量计算秩。
s =诊断接头(年代);rank_A = nnz (s)
rank_A = 2
的列空间的标准正交基一个
使用的列U
对应于非零奇异值。
column_basis = U(:逻辑(s))
column_basis =3×21 0 0 1 0 0
的零空间的标准正交基一个
使用的列V
对应的奇异值等于零。
null_basis = V (:, ~)
null_basis =3×1-0.7071 0 0.7071
的函数排名
,奥尔特
,零
提供方便的方法来计算这些量。
输入参数
一个
- - - - - -输入矩阵
矩阵
输入矩阵。一个
大小可以是正方形或长方形。
数据类型:单
|双
复数的支持:是的
outputForm
- - - - - -奇异值的输出格式
“向量”
|“矩阵”
奇异值的输出格式,指定为以下值之一:
“向量”
- - - - - -年代
是列向量。这是指定一个输出时的默认行为,S =圣言(X)
.“矩阵”
- - - - - -年代
是一个对角矩阵。这是指定多个输出时的默认行为,[U, V] =圣言(X)
.
例子:(U, V) =圣言(X,“矢量”)
返回年代
作为列向量而不是对角矩阵。
例子:S =圣言(X,“矩阵”)
返回年代
作为对角矩阵而不是列向量。
数据类型:字符
|字符串
输出参数
U
-左奇异向量
矩阵
左奇异向量,作为矩阵的列返回。
对于一个
米
——- - - - - -n
矩阵一个
与m > n
即经济规模的分解圣言(A,“经济学”)
只计算第一个n
列U
.在这种情况下,的列U
是正交的,U
是一个米
——- - - - - -n
矩阵满足 .完全分解,
圣言(A)
返回U
作为一个米
——- - - - - -米
酉矩阵满足 .的列U
对应于非零奇异值形成一组标准正交基向量的范围一个
.
不同的机器和MATLAB版本®可以产生不同的奇异向量,它们在数值上仍然是准确的。对应的列U
而且V
可以翻转它们的符号,因为这并不影响表达式的值一个= U * * V '
.
年代
- - - - - -奇异值
对角矩阵|列向量
奇异值,作为对角矩阵或列向量返回。奇异值是非负的,并按递减顺序返回。
如果一个
是一个米
——- - - - - -n
矩阵,年代
是对角矩阵,那么大小是年代
如下:
经济分解
圣言(A,“经济学”)
返回年代
作为一个有序的方阵min ([m, n])
.完全分解,
圣言(A)
返回年代
大小一样的一个
.
此外,中的奇异值年代
是否返回列向量或对角矩阵取决于如何调用圣言会
以及是否指定outputForm
选择:
如果你叫
圣言会
的一个输出或指定“向量”
选项,然后年代
是列向量。如果你叫
圣言会
的多个输出或指定“矩阵”
选项,然后年代
是一个对角矩阵。
根据指定的是一个输出还是多个输出,圣言会
可以返回数值仍然准确的不同奇异值。
V
-右奇异向量
矩阵
右奇异向量,作为矩阵的列返回。
对于一个
米
——- - - - - -n
矩阵一个
与m < n
,经济分解圣言(A,“经济学”)
只计算第一个米
列V
.在这种情况下,的列V
是正交的,V
是一个n
——- - - - - -米
矩阵满足 .完全分解,
圣言(A)
返回V
作为一个n
——- - - - - -n
酉矩阵满足 .的列V
做不的零空间的一组标准正交基向量对应于非零奇异值一个
.
不同的机器和MATLAB版本可以产生不同的奇异向量,这些奇异向量在数值上仍然是精确的。对应的列U
而且V
可以翻转它们的符号,因为这并不影响表达式的值一个= U * * V '
.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
使用注意事项和限制:
三个输出语法
[U, V] =圣言(X)
不支持。对于三个输出,必须指定圣言(X,“经济学”)
,并可选地指定“向量”
或“矩阵”
选项。与一个输出
s =圣言(X,…)
,除非指定,否则奇异值必须作为向量返回“经济学”
.
有关更多信息,请参见高大的数组.
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
代码生成使用不同的
圣言会
实现比MATLAB使用。由于奇异值分解不是唯一的,左右奇异向量可能与MATLAB计算的不同。代码生成不支持此函数的稀疏矩阵输入。
GPU的代码生成
使用GPU Coder™为NVIDIA GPU生成CUDA®代码。
使用注意事项和限制:
代码生成使用不同的
圣言会
实现比MATLAB使用。由于奇异值分解不是唯一的,左右奇异向量可能与MATLAB计算的不同。当输入矩阵包含非有限值时,生成的代码不会发出错误。相反,输出包含
南
值。代码生成不支持此函数的稀疏矩阵输入。
线程环境
在后台使用MATLAB®运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
该功能完全支持GPU阵列。有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存分区大型数组。
版本历史
之前介绍过的R2006aR2022b:“0”语法不推荐用于经济规模的分解
的语法(___) =圣言(0)
将继续得到支持,但不再推荐使用。使用“经济学”
选择执行经济规模的分解。
R2021b:指定输出格式
指定outputForm
作为“向量”
或“矩阵”
控制是否圣言会
以向量或矩阵的形式返回输出参数。对于大型分解,将输出返回为向量可以节省内存并提高效率。
R2021b:圣言会
返回南
对于非限定的输入
圣言会
返回南
当输入包含非有限值(正
或南
).在此之前,圣言会
当输入包含非有限值时抛出错误。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。