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.1882 0.6457 -0.4279 -0.4268 -0.4271
0.6897 0.3296 -0.4375 0.2067 0.4261
-0.6849 0.0135 -0.4470 0.2542 0.5160
0.0534 -0.3026 -0.4566 0.5787 -0.6019
0.1300 -0.6187 -0.4661 -0.6128 0.0869
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.3736 -0.6457 0.4279
-0.0076 -0.3296 0.4375
0.8617 -0.0135 0.4470
-0.2063 0.3026 0.4566
-0.2743 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 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.4998 -0.6586 0.3195 -0.4552 -0.0843
0.1754 0.5301 0.6218 -0.5408 0.0956
-0.0423 0.1729 -0.0078 -0.0271 -0.9836
-0.3869 0.3344 -0.6610 -0.5408 0.0956
0.7536 -0.3788 -0.2725 -0.4552 -0.0843
X = 5×5
-0.2115 0.8645 10.0949 -30.7287 -4.6958
-2.4503 -14.9242 -2.1067 -28.5003 -11.6858
11.6680 2.1838 -14.8016 -26.2720 -18.6758
-9.0062 11.8759 -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.8953
Inf
Inf
输入参数
输入矩阵。A 和 B 必须具有相同列数,但可以具有不同行数。
数据类型: single | double
复数支持: 是
输出参量
酉矩阵因子,以矩阵形式返回。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)。
矩阵因子,以矩阵形式返回。如果 A 是 m×p,并且 B 是 n×p,则 X 是 p×q,其中 q 是 [A; B] 的数值秩。
X 的一个属性是 norm([A; B]) == norm(X),因为 U、V、C 和 S 只表示矩阵 [A; B] 的一个正交基。
对角矩阵因子,以矩阵形式返回。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] 的数值秩。
广义奇异值,以列向量形式返回。如果 sv = max(S,[],1) 且 cv = max(C,[],1),则 A 和 B 的广义奇异值等于比值 cv./sv。
sigma 的长度等于 [A; B] 的数值秩且为非降序。
算法
由 gsvd 函数执行的广义奇异值分解使用 C-S 分解以及内置的 svd 和 qr 函数。
扩展功能
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2006a 之前推出如果使用函数调用 [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 在输出中返回额外的列(或元素)。
将继续支持语法 [U,V,X,C,S] = gsvd(A,B,0),但不再推荐使用。请改用 "econ" 选项来执行精简分解。
使用 "econ" 选项通过 gsvd 计算精简分解。功能与 gsvd(A,B,0) 相同。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)