Class QRDecompositionHouseholderTran_ZDRM

  • All Implemented Interfaces:
    org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.ZMatrixRMaj>, org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.ZMatrixRMaj>

    public class QRDecompositionHouseholderTran_ZDRM
    extends java.lang.Object
    implements org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.ZMatrixRMaj>

    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:
    org.ejml.dense.row.decomposition.qr.QRDecompositionHouseholder_DDRM
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean error  
      protected double gamma  
      protected double[] gammas  
      protected int minLength  
      protected int numCols  
      protected int numRows  
      protected org.ejml.data.ZMatrixRMaj QR
      Where the Q and R matrices are stored.
      protected org.ejml.data.Complex_F64 tau  
      protected double[] v  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void applyQ​(org.ejml.data.ZMatrixRMaj A)
      A = Q*A
      void applyTranQ​(org.ejml.data.ZMatrixRMaj A)
      A = QH*A
      boolean decompose​(org.ejml.data.ZMatrixRMaj A)
      To decompose the matrix 'A' it must have full rank.
      double[] getGammas()  
      org.ejml.data.ZMatrixRMaj getQ​(org.ejml.data.ZMatrixRMaj Q, boolean compact)
      Computes the Q matrix from the information stored in the QR matrix.
      org.ejml.data.ZMatrixRMaj getQR()
      Inner matrix that stores the decomposition
      org.ejml.data.ZMatrixRMaj getR​(org.ejml.data.ZMatrixRMaj 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 Detail

      • QR

        protected org.ejml.data.ZMatrixRMaj QR
        Where the Q and R matrices are stored. For speed reasons this is transposed
      • v

        protected double[] v
      • numCols

        protected int numCols
      • numRows

        protected int numRows
      • minLength

        protected int minLength
      • gammas

        protected double[] gammas
      • gamma

        protected double gamma
      • tau

        protected org.ejml.data.Complex_F64 tau
      • error

        protected boolean error
    • Constructor Detail

      • QRDecompositionHouseholderTran_ZDRM

        public QRDecompositionHouseholderTran_ZDRM()
    • Method Detail

      • setExpectedMaxSize

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

        public org.ejml.data.ZMatrixRMaj getQR()
        Inner matrix that stores the decomposition
      • getQ

        public org.ejml.data.ZMatrixRMaj getQ​(org.ejml.data.ZMatrixRMaj Q,
                                              boolean compact)
        Computes the Q matrix from the information 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.ZMatrixRMaj>
        Parameters:
        Q - The orthogonal Q matrix.
      • applyQ

        public void applyQ​(org.ejml.data.ZMatrixRMaj A)
        A = Q*A
        Parameters:
        A - Matrix that is being multiplied by Q. Is modified.
      • applyTranQ

        public void applyTranQ​(org.ejml.data.ZMatrixRMaj A)
        A = QH*A
        Parameters:
        A - Matrix that is being multiplied by QT. Is modified.
      • getR

        public org.ejml.data.ZMatrixRMaj getR​(org.ejml.data.ZMatrixRMaj R,
                                              boolean compact)
        Returns an upper triangular matrix which is the R in the QR decomposition.
        Specified by:
        getR in interface org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.ZMatrixRMaj>
        Parameters:
        R - An upper triangular matrix.
        compact -
      • decompose

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

        public boolean inputModified()
        Specified by:
        inputModified in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.ZMatrixRMaj>
      • 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 overflow and underflow.

        Q = I - γuuH

        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 double[] getGammas()