gsvd
广义奇异值分解
说明
示例
矩阵的广义奇异值分解
对两个矩阵执行一次广义奇异值分解,同时计算广义奇异值。
创建一个 5×3 矩阵 A
和一个 3×3 矩阵 B
。
A = reshape(1:15,5,3)
A = 5×3
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
B = magic(3)
B = 3×3
8 1 6
3 5 7
4 9 2
对 A
和 B
执行一次广义奇异值分解。输出包括正交矩阵 U
和 V
、非奇异矩阵 X
以及对角矩阵 C
和 S
。因为 A
秩亏,所以 C
的第一个对角线元素为零。
[U,V,X,C,S] = gsvd(A,B)
U = 5×5
-0.2569 0.6457 -0.4279 -0.4417 -0.3727
0.6384 0.3296 -0.4375 0.0834 0.5344
-0.6217 0.0135 -0.4470 0.5799 0.2779
0.3559 -0.3026 -0.4566 0.3567 -0.6679
-0.1156 -0.6187 -0.4661 -0.5783 0.2284
V = 3×3
-0.7071 -0.6946 0.1325
0.0000 -0.1874 -0.9823
0.7071 -0.6946 0.1325
X = 3×3
-2.8284 -9.3761 -6.9346
5.6569 -8.3071 -18.3301
-2.8284 -7.2381 -29.7256
C = 5×3
0.0000 0 0
0 0.3155 0
0 0 0.9807
0 0 0
0 0 0
S = 3×3
1.0000 0 0
0 0.9489 0
0 0 0.1957
现在,对 A
和 B
执行一次精简分解。矩阵 U
和 C
具有不同大小,但其他输出矩阵大小相同。
[U,V,X,C,S] = gsvd(A,B,"econ")
U = 5×3
0.5371 0.6457 0.4279
-0.8093 0.3296 0.4375
0.1673 0.0135 0.4470
-0.0551 -0.3026 0.4566
0.1600 -0.6187 0.4661
V = 3×3
0.7071 -0.6946 -0.1325
-0.0000 -0.1874 0.9823
-0.7071 -0.6946 -0.1325
X = 3×3
2.8284 -9.3761 6.9346
-5.6569 -8.3071 18.3301
2.8284 -7.2381 29.7256
C = 3×3
0.0000 0 0
0 0.3155 0
0 0 0.9807
S = 3×3
1.0000 0 0
0 0.9489 0
0 0 0.1957
计算广义奇异值,在本例中,广义奇异值等于比值 diag(C)./diag(S)
。这些值是对 svd(A/B)
返回的普通奇异值的重新排序。
sigma = gsvd(A,B)
sigma = 3×1
0.0000
0.3325
5.0123
svals = svd(A/B)
svals = 3×1
5.0123
0.3325
0.0000
具有无穷大奇异值的矩阵
检查为什么广义奇异值有时可以是 Inf
。
创建一个 3×5 矩阵 A
和一个 5×5 矩阵 B
。
A = reshape(1:15,3,5)
A = 3×5
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
B = magic(5)
B = 5×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
对 A
和 B
执行一次广义奇异值分解。输出包括正交矩阵 U
和 V
、非奇异矩阵 X
以及对角矩阵 C
和 S
。在此情况下,C
的非零对角线为 diag(C,2)
。
[U,V,X,C,S] = gsvd(A,B)
U = 3×3
0.4082 0.7178 -0.5639
-0.8165 0.0109 -0.5772
0.4082 -0.6961 -0.5906
V = 5×5
-0.7596 0.3266 0.3195 -0.4552 -0.0843
0.4139 -0.3747 0.6218 -0.5408 0.0956
0.0484 -0.1713 -0.0078 -0.0271 -0.9836
-0.1717 -0.4817 -0.6610 -0.5408 0.0956
0.4689 0.7011 -0.2725 -0.4552 -0.0843
X = 5×5
0.2422 -0.8564 10.0949 -30.7287 -4.6958
-9.4897 11.7764 -2.1067 -28.5003 -11.6858
11.2281 3.8525 -14.8016 -26.2720 -18.6758
-1.9806 -14.7725 -3.3206 -24.0436 -25.6657
0 0 10.1340 -21.8152 -32.6557
C = 3×5
0 0 0.0000 0 0
0 0 0 0.0439 0
0 0 0 0 0.7432
S = 5×5
1.0000 0 0 0 0
0 1.0000 0 0 0
0 0 1.0000 0 0
0 0 0 0.9990 0
0 0 0 0 0.6690
求包括零在内的广义奇异值。
sigma = gsvd(A,B)
sigma = 5×1
0
0
0.0000
0.0439
1.1109
颠倒 A
和 B
的角色会颠倒这些值,从而产生 Inf
值。
sigma2 = gsvd(B,A)
sigma2 = 5×1
1016 ×
0.0000
0.0000
3.8423
Inf
Inf
输入参数
A
, B
— 输入矩阵(以单独参量指定)
矩阵
输入矩阵。A
和 B
必须具有相同列数,但可以具有不同行数。
数据类型: single
| double
复数支持: 是
输出参量
U
, V
— 酉矩阵因子
矩阵
酉矩阵因子,以矩阵形式返回。U
和 V
是具有正交列的矩阵,它们分别构成 A
和 B
中列的基。
U
和 V
的大小取决于您是否指定 "econ"
选项。如果 A
为 m
×p
并且 B
为 n
×p
,则:
默认情况下,
U
为m
×m
且V
为n
×n
。如果指定
"econ"
选项,则U
为m
×min(m,p)
且V
为n
×min(n,p)
。
X
— 矩阵因子
矩阵
矩阵因子,以矩阵形式返回。如果 A
是 m
×p
,并且 B
是 n
×p
,则 X
是 p
×q
,其中 q
是 [A; B]
的数值秩。
X
的一个属性是 norm([A; B]) == norm(X)
,因为 U
、V
、C
和 S
只表示矩阵 [A; B]
的一个正交基。
C
, S
— 对角矩阵因子
矩阵
对角矩阵因子,以矩阵形式返回。S
的非零元素始终在其主对角线上。C
的非零元素在对角线 diag(C,max(0,size(C,2)-size(C,1)))
上。要检索非零值,请使用命令 sv = max(S,[],1)
和 cv = max(C,[],1)
。A
和 B
的广义奇异值等于比值 cv./sv
。
C
和 S
的大小取决于您是否指定 "econ"
选项。如果 A
为 m
×p
并且 B
为 n
×p
,则:
默认情况下,
C
为m
×q
且S
为n
×q
。如果指定
"econ"
选项,则C
为min(m,p)
×q
且V
为min(n,p)
×q
。
在这两种情况下,q
均为 [A; B]
的数值秩。
sigma
— 广义奇异值
列向量
广义奇异值,以列向量形式返回。如果 sv = max(S,[],1)
且 cv = max(C,[],1)
,则 A
和 B
的广义奇异值等于比值 cv./sv
。
sigma
的长度等于 [A; B]
的数值秩且为非递减顺序。
算法
由 gsvd
函数执行的广义奇异值分解使用 C-S 分解以及内置的 svd
和 qr
函数。
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2006a 之前推出R2022b: 基于数值秩的输出大小
如果使用函数调用 [U,V,X,C,S] = gsvd(A,B)
,其中 A
是 m
×p
并且 B
是 n
×p
,则 gsvd
函数:
以
p
×q
形式返回X
以
m
×q
形式返回C
以
n
×q
形式返回S
此外,使用一个输出参量时,函数调用 sigma = gsvd(A,B)
返回长度为 q
的广义奇异值向量。
行为变化是,在所有这些情况下,q
现在等于 [A; B]
的数值秩。数值秩根据 [A; B]
的 QR 分解计算得出。此更改可确保 C
和 S
的非零元素是确定且唯一的。
以前,q
的值是 min(m+n,p)
,当 [A; B]
不是满秩时,gsvd
在输出中返回额外的列(或元素)。
R2022b: 精简分解不推荐使用“0”语法
将继续支持语法 [U,V,X,C,S] = gsvd(A,B,0)
,但不再推荐使用。请改用 "econ"
选项来执行精简分解。
R2022a: 精简分解的选项
使用 "econ"
选项通过 gsvd
计算精简分解。功能与 gsvd(A,B,0)
相同。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)