Class BidiagonalDecompositionTall_MT_FDRM

java.lang.Object
org.ejml.dense.row.decomposition.bidiagonal.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>

@Generated("org.ejml.dense.row.decomposition.bidiagonal.BidiagonalDecompositionTall_FDRM")
public class BidiagonalDecompositionTall_MT_FDRM
extends Object
implements org.ejml.interfaces.decomposition.BidiagonalDecomposition_F32<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
    Constructor Description
    BidiagonalDecompositionTall_MT_FDRM()  
  • Method Summary

    Modifier and Type Method Description
    boolean decompose​(org.ejml.data.FMatrixRMaj orig)  
    org.ejml.data.FMatrixRMaj getB​(@Nullable org.ejml.data.FMatrixRMaj B, boolean compact)  
    void getDiagonal​(float[] diag, float[] off)  
    org.ejml.data.FMatrixRMaj getU​(@Nullable org.ejml.data.FMatrixRMaj U, boolean transpose, boolean compact)  
    org.ejml.data.FMatrixRMaj getV​(@Nullable org.ejml.data.FMatrixRMaj 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 Details

    • BidiagonalDecompositionTall_MT_FDRM

      public BidiagonalDecompositionTall_MT_FDRM()
  • Method Details

    • getDiagonal

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

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

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