public class SvdImplicitQrDecompose_FDRM
extends java.lang.Object
implements org.ejml.interfaces.decomposition.SingularValueDecomposition_F32<org.ejml.data.FMatrixRMaj>
Computes the Singular value decomposition of a matrix using the implicit QR algorithm for singular value decomposition. It works by first by transforming the matrix to a bidiagonal A=U*B*VT form, then it implicitly computing the eigenvalues of the BTB matrix, which are the same as the singular values in the original A matrix.
Based off of the description provided in:
David S. Watkins, "Fundamentals of Matrix Computations," Second Edition. Page 404-411
Constructor and Description |
---|
SvdImplicitQrDecompose_FDRM(boolean compact,
boolean computeU,
boolean computeV,
boolean canUseTallBidiagonal)
Configures the class
|
Modifier and Type | Method and Description |
---|---|
boolean |
decompose(org.ejml.data.FMatrixRMaj orig) |
float[] |
getSingularValues() |
org.ejml.data.FMatrixRMaj |
getU(org.ejml.data.FMatrixRMaj U,
boolean transpose) |
org.ejml.data.FMatrixRMaj |
getV(org.ejml.data.FMatrixRMaj V,
boolean transpose) |
org.ejml.data.FMatrixRMaj |
getW(org.ejml.data.FMatrixRMaj W) |
boolean |
inputModified() |
boolean |
isCompact() |
int |
numberOfSingularValues() |
int |
numCols() |
int |
numRows() |
public SvdImplicitQrDecompose_FDRM(boolean compact, boolean computeU, boolean computeV, boolean canUseTallBidiagonal)
compact
- Compute a compact SVDcomputeU
- If true it will compute the U matrixcomputeV
- If true it will compute the V matrixcanUseTallBidiagonal
- If true then it can choose to use a tall Bidiagonal decomposition to improve runtime performance.public float[] getSingularValues()
getSingularValues
in interface org.ejml.interfaces.decomposition.SingularValueDecomposition_F32<org.ejml.data.FMatrixRMaj>
public int numberOfSingularValues()
numberOfSingularValues
in interface org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj>
public boolean isCompact()
isCompact
in interface org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj>
public org.ejml.data.FMatrixRMaj getU(org.ejml.data.FMatrixRMaj U, boolean transpose)
getU
in interface org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj>
public org.ejml.data.FMatrixRMaj getV(org.ejml.data.FMatrixRMaj V, boolean transpose)
getV
in interface org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj>
public org.ejml.data.FMatrixRMaj getW(org.ejml.data.FMatrixRMaj W)
getW
in interface org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj>
public boolean decompose(org.ejml.data.FMatrixRMaj orig)
decompose
in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>
public boolean inputModified()
inputModified
in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>
public int numRows()
numRows
in interface org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj>
public int numCols()
numCols
in interface org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj>