gsvd

Generalized singular value decomposition

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, X is p-by-q, C is m-by-q and S is n-by-q, where q = min(m+n,p).

The nonzero elements of S are always on its main diagonal. The nonzero elements of C are on the diagonal diag(C,max(0,q-m)). If m >= q, this is the main diagonal of C.

[U,V,X,C,S] = gsvd(A,B,0), where A is m-by-p and B is n-by-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) so long as m >= p and n >= p.

If A is m-by-p and B is n-by-p, then U is m-by-min(q,m), V is n-by-min(q,n), X is p-by-q, C is min(q,m)-by-q and S is min(q,n)-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)). When B is square and nonsingular, the generalized singular values, gsvd(A,B), correspond to the ordinary singular values, svd(A/B), but they are sorted in the opposite order. Their reciprocals are gsvd(B,A).

The vector sigma has length q and is in non-decreasing order.

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+16 *

    0.0000
    0.0000
    8.8252
       Inf
       Inf

Tips

  • 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 [1], 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.

Algorithms

The generalized singular value decomposition uses the C-S decomposition described in [1], as well as the built-in svd and qr functions. The C-S decomposition is implemented in a local function in the gsvd program file.

References

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

See Also

|

Introduced before R2006a