Class QRDecompositionHouseholderColumn_FDRM

java.lang.Object
org.ejml.dense.row.decomposition.qr.QRDecompositionHouseholderColumn_FDRM
All Implemented Interfaces:
org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>, org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.FMatrixRMaj>
Direct Known Subclasses:
QRColPivDecompositionHouseholderColumn_FDRM, QRDecompositionHouseholderColumn_MT_FDRM

@Generated("org.ejml.dense.row.decomposition.qr.QRDecompositionHouseholderColumn_DDRM") public class QRDecompositionHouseholderColumn_FDRM extends Object implements org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.FMatrixRMaj>

Householder QR decomposition is rich in operations along the columns of the matrix. This can be taken advantage of by solving for the Q matrix in a column major format to reduce the number of CPU cache misses and the number of copies that are performed.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected float[][]
    Where the Q and R matrices are stored.
    protected boolean
     
    protected float
     
    protected float[]
     
    protected int
     
    protected int
     
    protected int
     
    protected float
     
    protected float[]
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    convertToColumnMajor(org.ejml.data.FMatrixRMaj A)
    Converts the standard row-major matrix into a column-major vector that is advantageous for this problem.
    boolean
    decompose(org.ejml.data.FMatrixRMaj A)
    To decompose the matrix 'A' it must have full rank.
    float[]
     
    org.ejml.data.FMatrixRMaj
    getQ(@Nullable org.ejml.data.FMatrixRMaj Q, boolean compact)
    Computes the Q matrix from the imformation stored in the QR matrix.
    float[][]
    Returns the combined QR matrix in a 2D array format that is column major.
    org.ejml.data.FMatrixRMaj
    getR(@Nullable org.ejml.data.FMatrixRMaj R, boolean compact)
    Returns an upper triangular matrix which is the R in the QR decomposition.
    protected void
    householder(int j)
    Computes the householder vector "u" for the first column of submatrix j.
    boolean
     
    void
    setExpectedMaxSize(int numRows, int numCols)
     
    protected void
    updateA(int w)
    Takes the results from the householder computation and updates the 'A' matrix.

    A = (I - γ*u*uT)A

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • dataQR

      protected float[][] dataQR
      Where the Q and R matrices are stored. R is stored in the upper triangular portion and Q on the lower bit. Lower columns are where u is stored. Q_k = (I - gamma_k*u_k*u_k^T).
    • v

      protected float[] v
    • numCols

      protected int numCols
    • numRows

      protected int numRows
    • minLength

      protected int minLength
    • gammas

      protected float[] gammas
    • gamma

      protected float gamma
    • tau

      protected float tau
    • error

      protected boolean error
  • Constructor Details

    • QRDecompositionHouseholderColumn_FDRM

      public QRDecompositionHouseholderColumn_FDRM()
  • Method Details

    • setExpectedMaxSize

      public void setExpectedMaxSize(int numRows, int numCols)
    • getQR

      public float[][] getQR()
      Returns the combined QR matrix in a 2D array format that is column major.
      Returns:
      The QR matrix in a 2D matrix column major format. [ column ][ row ]
    • getQ

      public org.ejml.data.FMatrixRMaj getQ(@Nullable @Nullable org.ejml.data.FMatrixRMaj Q, boolean compact)
      Computes the Q matrix from the imformation stored in the QR matrix. This operation requires about 4(m2n-mn2+n3/3) flops.
      Specified by:
      getQ in interface org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.FMatrixRMaj>
      Parameters:
      Q - The orthogonal Q matrix.
    • getR

      public org.ejml.data.FMatrixRMaj getR(@Nullable @Nullable org.ejml.data.FMatrixRMaj R, boolean compact)
      Returns an upper triangular matrix which is the R in the QR decomposition. If compact then the input expected to be size = [min(rows,cols) , numCols] otherwise size = [numRows,numCols].
      Specified by:
      getR in interface org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.FMatrixRMaj>
      Parameters:
      R - Storage for upper triangular matrix.
      compact - If true then a compact matrix is expected.
    • decompose

      public boolean decompose(org.ejml.data.FMatrixRMaj A)

      To decompose the matrix 'A' it must have full rank. 'A' is a 'm' by 'n' matrix. It requires about 2n*m2-2m2/3 flops.

      The matrix provided here can be of different dimension than the one specified in the constructor. It just has to be smaller than or equal to it.

      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>
    • convertToColumnMajor

      protected void convertToColumnMajor(org.ejml.data.FMatrixRMaj A)
      Converts the standard row-major matrix into a column-major vector that is advantageous for this problem.
      Parameters:
      A - original matrix that is to be decomposed.
    • householder

      protected void householder(int j)

      Computes the householder vector "u" for the first column of submatrix j. Note this is a specialized householder for this problem. There is some protection against overfloaw and underflow.

      Q = I - γuuT

      This function finds the values of 'u' and 'γ'.

      Parameters:
      j - Which submatrix to work off of.
    • updateA

      protected void updateA(int w)

      Takes the results from the householder computation and updates the 'A' matrix.

      A = (I - γ*u*uT)A

      Parameters:
      w - The submatrix.
    • getGammas

      public float[] getGammas()