Class QRDecompositionHouseholderColumn_CDRM

java.lang.Object
org.ejml.dense.row.decompose.qr.QRDecompositionHouseholderColumn_CDRM
All Implemented Interfaces:
org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.CMatrixRMaj>, org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.CMatrixRMaj>

@Generated("org.ejml.dense.row.decompose.qr.QRDecompositionHouseholderColumn_ZDRM")
public class QRDecompositionHouseholderColumn_CDRM
extends Object
implements org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.CMatrixRMaj>

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:
QRDecompositionHouseholder_CDRM
  • Field Summary

    Fields
    Modifier and Type Field Description
    protected float[][] dataQR
    Where the Q and R matrices are stored.
    protected boolean error  
    protected float gamma  
    protected float[] gammas  
    protected int minLength  
    protected int numCols  
    protected int numRows  
    protected org.ejml.data.Complex_F32 tau  
    protected float[] v  
  • Constructor Summary

    Constructors
    Constructor Description
    QRDecompositionHouseholderColumn_CDRM()  
  • Method Summary

    Modifier and Type Method Description
    protected void convertToColumnMajor​(org.ejml.data.CMatrixRMaj A)
    Converts the standard row-major matrix into a column-major vector that is advantageous for this problem.
    boolean decompose​(org.ejml.data.CMatrixRMaj A)
    To decompose the matrix 'A' it must have full rank.
    float[] getGammas()  
    org.ejml.data.CMatrixRMaj getQ​(@Nullable org.ejml.data.CMatrixRMaj Q, boolean compact)
    Computes the Q matrix from the imformation stored in the QR matrix.
    float[][] getQR()
    Returns the combined QR matrix in a 2D array format that is column major.
    org.ejml.data.CMatrixRMaj getR​(@Nullable org.ejml.data.CMatrixRMaj 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 inputModified()  
    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*uH)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 org.ejml.data.Complex_F32 tau
    • error

      protected boolean error
  • Constructor Details

    • QRDecompositionHouseholderColumn_CDRM

      public QRDecompositionHouseholderColumn_CDRM()
  • 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.CMatrixRMaj getQ​(@Nullable @Nullable org.ejml.data.CMatrixRMaj 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.CMatrixRMaj>
      Parameters:
      Q - The orthogonal Q matrix.
    • getR

      public org.ejml.data.CMatrixRMaj getR​(@Nullable @Nullable org.ejml.data.CMatrixRMaj 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.CMatrixRMaj>
      Parameters:
      R - Storage for upper triangular matrix.
      compact - If true then a compact matrix is expected.
    • decompose

      public boolean decompose​(org.ejml.data.CMatrixRMaj 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.CMatrixRMaj>
    • inputModified

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

      protected void convertToColumnMajor​(org.ejml.data.CMatrixRMaj 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*uH)A

      Parameters:
      w - The submatrix.
    • getGammas

      public float[] getGammas()