Class 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_F64 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_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.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean decompose​(org.ejml.data.DMatrixRMaj orig)  
      org.ejml.data.DMatrixRMaj getB​(org.ejml.data.DMatrixRMaj B, boolean compact)  
      void getDiagonal​(double[] diag, double[] off)  
      org.ejml.data.DMatrixRMaj getU​(org.ejml.data.DMatrixRMaj U, boolean transpose, boolean compact)  
      org.ejml.data.DMatrixRMaj getV​(org.ejml.data.DMatrixRMaj V, boolean transpose, boolean compact)  
      boolean inputModified()  
      • Methods inherited from class java.lang.Object

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

      • BidiagonalDecompositionTall_DDRM

        public BidiagonalDecompositionTall_DDRM()
    • Method Detail

      • getDiagonal

        public void getDiagonal​(double[] diag,
                                double[] off)
        Specified by:
        getDiagonal in interface org.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:
        getB in interface org.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:
        getU in interface org.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:
        getV in interface org.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DMatrixRMaj>
      • decompose

        public boolean decompose​(org.ejml.data.DMatrixRMaj orig)
        Specified by:
        decompose in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.DMatrixRMaj>
      • inputModified

        public boolean inputModified()
        Specified by:
        inputModified in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.DMatrixRMaj>