Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

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, 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

More About

collapse all

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

Was this topic helpful?