de.lmu.ifi.dbs.elki.math.linearalgebra

## Class SingularValueDecomposition

• java.lang.Object
• de.lmu.ifi.dbs.elki.math.linearalgebra.SingularValueDecomposition

• public class SingularValueDecomposition
extends java.lang.Object
Singular Value Decomposition.

For an m-by-n matrix A with m >= n, the singular value decomposition is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and an n-by-n ozthogonal matrix V so that A = U*S*V'.

The singular values, sigma[k] = S[k][k], are ordered so that sigma[0] >= sigma[1] >= ... >= sigma[n-1].

The singular value decomposition always exists, so the constructor will never fail. The matrix condition number and the effective numerical rank can be computed from this decomposition.

Since:
0.1
Author:
Arthur Zimek
• ### Field Summary

Fields
Modifier and Type Field and Description
private int m
Row and column dimensions.
private int n
Row and column dimensions.
private double[] s
Array for internal storage of singular values.
private double[][] U
Arrays for internal storage of U and V.
private double[][] V
Arrays for internal storage of U and V.
• ### Constructor Summary

Constructors
Constructor and Description
SingularValueDecomposition(double[][] Arg)
Constructor.
• ### Method Summary

All Methods
Modifier and Type Method and Description
double cond()
Two norm condition number
private int convergence(int k, int pp, boolean wantu, boolean wantv)
private void deflate(double[] e, int p, int k, boolean wantv)
private void generateU(int nu, int nct)
private void generateV(int nu, double[] e, int nrt)
double[][] getS()
Return the diagonal matrix of singular values
double[] getSingularValues()
Return the one-dimensional array of singular values
double[][] getU()
Return the left singular vectors
double[][] getV()
Return the right singular vectors
double norm2()
Two norm
private void qrStep(double[] e, int p, int k, boolean wantu, boolean wantv)
int rank()
Effective numerical matrix rank
private void split(double[] e, int p, int k, boolean wantu)
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ### Field Detail

• #### U

private double[][] U
Arrays for internal storage of U and V.
• #### V

private double[][] V
Arrays for internal storage of U and V.
• #### s

private double[] s
Array for internal storage of singular values.
• #### m

private int m
Row and column dimensions.
• #### n

private int n
Row and column dimensions.
• ### Constructor Detail

• #### SingularValueDecomposition

public SingularValueDecomposition(double[][] Arg)
Constructor.
Parameters:
Arg - Rectangular input matrix
• ### Method Detail

• #### generateU

private void generateU(int nu,
int nct)
• #### generateV

private void generateV(int nu,
double[] e,
int nrt)
• #### deflate

private void deflate(double[] e,
int p,
int k,
boolean wantv)
• #### split

private void split(double[] e,
int p,
int k,
boolean wantu)
• #### qrStep

private void qrStep(double[] e,
int p,
int k,
boolean wantu,
boolean wantv)
• #### convergence

private int convergence(int k,
int pp,
boolean wantu,
boolean wantv)
• #### getU

public double[][] getU()
Return the left singular vectors
Returns:
U
• #### getV

public double[][] getV()
Return the right singular vectors
Returns:
V
• #### getSingularValues

public double[] getSingularValues()
Return the one-dimensional array of singular values
Returns:
diagonal of S.
• #### getS

public double[][] getS()
Return the diagonal matrix of singular values
Returns:
S
• #### norm2

public double norm2()
Two norm
Returns:
max(S)
• #### cond

public double cond()
Two norm condition number
Returns:
max(S)/min(S)
• #### rank

public int rank()
Effective numerical matrix rank
Returns:
Number of non-negligible singular values.
Skip navigation links
ELKI version 0.7.5

Copyright © 2019 ELKI Development Team. License information.