MATLAB Function Reference  gsvd

Generalized singular value decomposition

Syntax

• ```[U,V,X,C,S] = gsvd(A,B)
[U,V,X,C,S] = gsvd(A,B,0)
sigma = gsvd(A,B)
```

Description

```[U,V,X,C,S] = gsvd(A,B) ``` returns unitary matrices `U` and `V`, a (usually) square matrix `X`, and nonnegative diagonal matrices `C` and `S` so that

• ```A = U*C*X'
B = V*S*X'
C'*C + S'*S = I
```

`A` and `B` must have the same number of columns, but may have different numbers of rows. If `A` is `m`-by-`p` and `B` is `n`-by-`p`, then `U` is `m`-by-`m`, `V` is `n`-by-`n` and `X` is `p`-by-`q` where `q = min(m+n,p)`.

```sigma = gsvd(A,B) ``` returns the vector of generalized singular values, `sqrt(diag(C'*C)./diag(S'*S))`.

The nonzero elements of `S` are always on its main diagonal. If `m >= p` the nonzero elements of `C` are also on its main diagonal. But if `m < p`, the nonzero diagonal of `C` is `diag(C,p-m)`. This allows the diagonal elements to be ordered so that the generalized singular values are nondecreasing.

`gsvd(A,B,0)`, with three input arguments and either `m` or `n >= p`, produces the "economy-sized" decomposition where the resulting `U` and `V` have at most `p` columns, and `C` and `S` have at most `p` rows. The generalized singular values are `diag(C)./diag(S)`.

When `B` is square and nonsingular, the generalized singular values, `gsvd(A,B)`, are equal to the ordinary singular values, `svd(A/B)`, but they are sorted in the opposite order. Their reciprocals are `gsvd(B,A)`.

In this formulation of the `gsvd`, no assumptions are made about the individual ranks of `A` or `B`. The matrix `X` has full rank if and only if the matrix `[A;B]` has full rank. In fact, `svd(X)` and `cond(X)` are equal to `svd([A;B])` and `cond([A;B])`. Other formulations, eg. G. Golub and C. Van Loan , require that `null(A)` and `null(B)` do not overlap and replace `X` by `inv(X)` or `inv(X')`.

Note, however, that when `null(A)` and `null(B)` do overlap, the nonzero elements of `C` and `S` are not uniquely determined.

Examples

Example 1. The matrices have at least as many rows as columns.

• ```A = reshape(1:15,5,3)
B = magic(3)
A =
1     6    11
2     7    12
3     8    13
4     9    14
5    10    15
B =
8     1     6
3     5     7
4     9     2
```

The statement

• ```[U,V,X,C,S] = gsvd(A,B)
```

produces a 5-by-5 orthogonal `U`, a 3-by-3 orthogonal `V`, a 3-by-3 nonsingular `X`,

• ```X =
2.8284   -9.3761   -6.9346
-5.6569   -8.3071  -18.3301
2.8284   -7.2381  -29.7256
```

and

• ```C =
0.0000         0         0
0    0.3155         0
0         0    0.9807
0         0         0
0         0         0
S =
1.0000         0         0
0    0.9489         0
0         0    0.1957
```

Since `A` is rank deficient, the first diagonal element of `C` is zero.

The economy sized decomposition,

• ```[U,V,X,C,S] = gsvd(A,B,0)
```

produces a 5-by-3 matrix `U` and a 3-by-3 matrix `C`.

• ```U =
0.5700   -0.6457   -0.4279
-0.7455   -0.3296   -0.4375
-0.1702   -0.0135   -0.4470
0.2966    0.3026   -0.4566
0.0490    0.6187   -0.4661

C =
0.0000         0         0
0    0.3155         0
0         0    0.9807
```

The other three matrices, `V`, `X`, and `S` are the same as those obtained with the full decomposition.

The generalized singular values are the ratios of the diagonal elements of `C` and `S`.

• ```sigma = gsvd(A,B)
sigma =
0.0000
0.3325
5.0123
```

These values are a reordering of the ordinary singular values

• ```svd(A/B)
ans =
5.0123
0.3325
0.0000
```

Example 2. The matrices have at least as many columns as rows.

• ```A = reshape(1:15,3,5)
B = magic(5)
A =

1     4     7    10    13
2     5     8    11    14
3     6     9    12    15
B =
```

• ```        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
```

The statement

• ```[U,V,X,C,S] = gsvd(A,B)
```

produces a 3-by-3 orthogonal `U`, a 5-by-5 orthogonal `V`, a 5-by-5 nonsingular `X` and

• ```C =
0         0    0.0000         0         0
0         0         0    0.0439         0
0         0         0         0    0.7432
S =
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
```

In this situation, the nonzero diagonal of `C` is `diag(C,2)`. The generalized singular values include three zeros.

• ```sigma = gsvd(A,B)
sigma =
0
0
0.0000
0.0439
1.1109
```

Reversing the roles of `A` and `B` reciprocates these values, producing two infinities.

• ```gsvd(B,A)
ans =
1.0e+016 *

0.0000
0.0000
4.4126
Inf
Inf
```

Algorithm

The generalized singular value decomposition uses the C-S decomposition described in , as well as the built-in `svd` and `qr` functions. The C-S decomposition is implemented in a subfunction in the `gsvd` M-file.

Diagnostics

The only warning or error message produced by `gsvd` itself occurs when the two input arguments do not have the same number of columns.

See Also

`qr`, `svd`

References

  Golub, Gene H. and Charles Van Loan, Matrix Computations, Third Edition, Johns Hopkins University Press, Baltimore, 1996

© 1994-2005 The MathWorks, Inc.