Class BidiagonalDecompositionTall_DDRM
- java.lang.Object
-
- org.ejml.dense.row.decomposition.bidiagonal.BidiagonalDecompositionTall_DDRM
-
- All Implemented Interfaces:
org.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DMatrixRMaj>,org.ejml.interfaces.decomposition.BidiagonalDecomposition_F64<org.ejml.data.DMatrixRMaj>,org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.DMatrixRMaj>
public class BidiagonalDecompositionTall_DDRM extends java.lang.Object implements org.ejml.interfaces.decomposition.BidiagonalDecomposition_F64<org.ejml.data.DMatrixRMaj>BidiagonalDecomposition_F64specifically 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*VTA 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_F64. 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 Constructor Description BidiagonalDecompositionTall_DDRM()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleandecompose(org.ejml.data.DMatrixRMaj orig)org.ejml.data.DMatrixRMajgetB(org.ejml.data.DMatrixRMaj B, boolean compact)voidgetDiagonal(double[] diag, double[] off)org.ejml.data.DMatrixRMajgetU(org.ejml.data.DMatrixRMaj U, boolean transpose, boolean compact)org.ejml.data.DMatrixRMajgetV(org.ejml.data.DMatrixRMaj V, boolean transpose, boolean compact)booleaninputModified()
-
-
-
Method Detail
-
getDiagonal
public void getDiagonal(double[] diag, double[] off)- Specified by:
getDiagonalin interfaceorg.ejml.interfaces.decomposition.BidiagonalDecomposition_F64<org.ejml.data.DMatrixRMaj>
-
getB
public org.ejml.data.DMatrixRMaj getB(org.ejml.data.DMatrixRMaj B, boolean compact)- Specified by:
getBin interfaceorg.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DMatrixRMaj>
-
getU
public org.ejml.data.DMatrixRMaj getU(org.ejml.data.DMatrixRMaj U, boolean transpose, boolean compact)- Specified by:
getUin interfaceorg.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DMatrixRMaj>
-
getV
public org.ejml.data.DMatrixRMaj getV(org.ejml.data.DMatrixRMaj V, boolean transpose, boolean compact)- Specified by:
getVin interfaceorg.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DMatrixRMaj>
-
decompose
public boolean decompose(org.ejml.data.DMatrixRMaj orig)
- Specified by:
decomposein interfaceorg.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.DMatrixRMaj>
-
inputModified
public boolean inputModified()
- Specified by:
inputModifiedin interfaceorg.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.DMatrixRMaj>
-
-