public class QRDecompositionHouseholderColumn_CDRM
extends java.lang.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.
QRDecompositionHouseholder_CDRM
Modifier and Type | Field and 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 and Description |
---|
QRDecompositionHouseholderColumn_CDRM() |
Modifier and Type | Method and 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(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(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 |
protected float[][] dataQR
protected float[] v
protected int numCols
protected int numRows
protected int minLength
protected float[] gammas
protected float gamma
protected org.ejml.data.Complex_F32 tau
protected boolean error
public QRDecompositionHouseholderColumn_CDRM()
public void setExpectedMaxSize(int numRows, int numCols)
public float[][] getQR()
public org.ejml.data.CMatrixRMaj getQ(org.ejml.data.CMatrixRMaj Q, boolean compact)
getQ
in interface org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.CMatrixRMaj>
Q
- The orthogonal Q matrix.public org.ejml.data.CMatrixRMaj getR(org.ejml.data.CMatrixRMaj R, boolean compact)
getR
in interface org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.CMatrixRMaj>
R
- Storage for upper triangular matrix.compact
- If true then a compact matrix is expected.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.
decompose
in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.CMatrixRMaj>
public boolean inputModified()
inputModified
in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.CMatrixRMaj>
protected void convertToColumnMajor(org.ejml.data.CMatrixRMaj A)
A
- original matrix that is to be decomposed.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 'γ'.
j
- Which submatrix to work off of.protected void updateA(int w)
Takes the results from the householder computation and updates the 'A' matrix.
A = (I - γ*u*uH)A
w
- The submatrix.public float[] getGammas()