Class QRDecompositionHouseholderTran_ZDRM
- All Implemented Interfaces:
org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.ZMatrixRMaj>,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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected doubleprotected double[]protected intprotected intprotected intprotected org.ejml.data.ZMatrixRMajWhere the Q and R matrices are stored.protected org.ejml.data.Complex_F64protected double[] -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidapplyQ(org.ejml.data.ZMatrixRMaj A) A = Q*AvoidapplyTranQ(org.ejml.data.ZMatrixRMaj A) A = QH*Abooleandecompose(org.ejml.data.ZMatrixRMaj A) To decompose the matrix 'A' it must have full rank.double[]org.ejml.data.ZMatrixRMajgetQ(@Nullable org.ejml.data.ZMatrixRMaj Q, boolean compact) Computes the Q matrix from the information stored in the QR matrix.org.ejml.data.ZMatrixRMajgetQR()Inner matrix that stores the decompositionorg.ejml.data.ZMatrixRMajgetR(@Nullable org.ejml.data.ZMatrixRMaj R, boolean compact) Returns an upper triangular matrix which is the R in the QR decomposition.protected voidhouseholder(int j) Computes the householder vector "u" for the first column of submatrix j.booleanvoidsetExpectedMaxSize(int numRows, int numCols) protected voidupdateA(int w) Takes the results from the householder computation and updates the 'A' matrix.
A = (I - γ*u*uH)A
-
Field Details
-
QR
protected org.ejml.data.ZMatrixRMaj QRWhere 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 Details
-
QRDecompositionHouseholderTran_ZDRM
public QRDecompositionHouseholderTran_ZDRM()
-
-
Method Details
-
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(@Nullable @Nullable 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:
getQin interfaceorg.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(@Nullable @Nullable org.ejml.data.ZMatrixRMaj R, boolean compact) Returns an upper triangular matrix which is the R in the QR decomposition.- Specified by:
getRin interfaceorg.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.ZMatrixRMaj>- Parameters:
R- An upper triangular matrix.
-
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:
decomposein interfaceorg.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.ZMatrixRMaj>
-
inputModified
public boolean inputModified()- Specified by:
inputModifiedin interfaceorg.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()
-