Class BidiagonalDecompositionTall_MT_FDRM
- All Implemented Interfaces:
org.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.FMatrixRMaj>,org.ejml.interfaces.decomposition.BidiagonalDecomposition_F32<org.ejml.data.FMatrixRMaj>,org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>
BidiagonalDecomposition_F32 specifically designed for tall matrices.
First step is to perform QR decomposition on the input matrix. Then R is decomposed using
a bidiagonal decomposition. By performing the bidiagonal decomposition on the smaller matrix
computations can be saved if m/n > 5/3 and if U is NOT needed.
A = [Q1 Q2][U1 0; 0 I] [B1;0] VT
U=[Q1*U1 Q2]
B=[B1;0]
A = U*B*VT
A QRP decomposition is used internally. That decomposition relies an a fixed threshold for selecting singular values and is known to be less stable than SVD. There is the potential for a degregation of stability by using BidiagonalDecompositionTall instead of BidiagonalDecomposition_F32. A few simple tests have shown that loss in stability to be insignificant.
See page 404 in "Fundamentals of Matrix Computations", 2nd by David S. Watkins.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleandecompose(org.ejml.data.FMatrixRMaj orig) org.ejml.data.FMatrixRMajgetB(@Nullable org.ejml.data.FMatrixRMaj B, boolean compact) voidgetDiagonal(float[] diag, float[] off) org.ejml.data.FMatrixRMajgetU(@Nullable org.ejml.data.FMatrixRMaj U, boolean transpose, boolean compact) org.ejml.data.FMatrixRMajgetV(@Nullable org.ejml.data.FMatrixRMaj V, boolean transpose, boolean compact) boolean
-
Constructor Details
-
BidiagonalDecompositionTall_MT_FDRM
public BidiagonalDecompositionTall_MT_FDRM()
-
-
Method Details
-
getDiagonal
public void getDiagonal(float[] diag, float[] off) - Specified by:
getDiagonalin interfaceorg.ejml.interfaces.decomposition.BidiagonalDecomposition_F32<org.ejml.data.FMatrixRMaj>
-
getB
public org.ejml.data.FMatrixRMaj getB(@Nullable @Nullable org.ejml.data.FMatrixRMaj B, boolean compact) - Specified by:
getBin interfaceorg.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.FMatrixRMaj>
-
getU
public org.ejml.data.FMatrixRMaj getU(@Nullable @Nullable org.ejml.data.FMatrixRMaj U, boolean transpose, boolean compact) - Specified by:
getUin interfaceorg.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.FMatrixRMaj>
-
getV
public org.ejml.data.FMatrixRMaj getV(@Nullable @Nullable org.ejml.data.FMatrixRMaj V, boolean transpose, boolean compact) - Specified by:
getVin interfaceorg.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.FMatrixRMaj>
-
decompose
public boolean decompose(org.ejml.data.FMatrixRMaj orig) - Specified by:
decomposein interfaceorg.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>
-
inputModified
public boolean inputModified()- Specified by:
inputModifiedin interfaceorg.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>
-