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의 첫 번째 대각선 요소는 0입니다.
[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)에서 반환된 다음과 같은 일반 특이값을 재정렬(Reordering)한 것입니다.
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에서 0이 아닌 대각선은 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
0이 포함된 일반화된 특이값을 구합니다.
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의 0이 아닌 요소는 항상 주대각선에 있습니다. C의 0이 아닌 요소는 대각선 diag(C,max(0,size(C,2)-size(C,1)))에 있습니다. 0이 아닌 값을 가져오려면 명령 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 함수로 수행된 일반화된 특이값 분해는 내장 svd 및 qr 함수뿐 아니라 C-S 분해를 사용합니다.
확장 기능
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨함수 호출 [U,V,X,C,S] = gsvd(A,B)(여기서 A는 m×p이고 B는 n×p임)에서 gsvd 함수는 다음 크기의 값을 반환합니다.
X를p×q로C를m×q로S를n×q로
또한 하나의 출력 인수를 갖는 함수 호출 sigma = gsvd(A,B)는 길이가 q이며 일반화된 특이값으로 구성된 벡터를 반환합니다.
이러한 모든 경우 q가 이제 [A; B]의 수치적 랭크와 같다는 것이 동작 변경 사항입니다. 수치적 랭크는 [A; B]의 QR 분해에서 계산됩니다. 이 변경 사항으로 인해 C와 S의 0이 아닌 요소가 고유하게 결정됩니다.
이전에는 q의 값이 min(m+n,p)였으며, [A; B]가 완전 랭크가 아닌 경우 gsvd는 추가 열(또는 요소)을 출력값으로 반환했습니다.
구문 [U,V,X,C,S] = gsvd(A,B,0)은 계속 지원되지만, 더 이상 권장되지 않습니다. 효율적 크기의 분해를 수행하려면 "econ" 옵션을 대신 사용합니다.
gsvd 함수로 효율적 크기의 분해를 계산하려면 "econ" 옵션을 사용합니다. 이 기능은 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)