public class SingularValueDecomposition
extends java.lang.Object
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.
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 and Description |
---|
SingularValueDecomposition(double[][] Arg)
Constructor.
|
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) |
private double[][] U
private double[][] V
private double[] s
private int m
private int n
public SingularValueDecomposition(double[][] Arg)
Arg
- Rectangular input matrixprivate void generateU(int nu, int nct)
private void generateV(int nu, double[] e, int nrt)
private void deflate(double[] e, int p, int k, boolean wantv)
private void split(double[] e, int p, int k, boolean wantu)
private void qrStep(double[] e, int p, int k, boolean wantu, boolean wantv)
private int convergence(int k, int pp, boolean wantu, boolean wantv)
public double[][] getU()
public double[][] getV()
public double[] getSingularValues()
public double[][] getS()
public double norm2()
public double cond()
public int rank()
Copyright © 2019 ELKI Development Team. License information.