public class QRDecompositionHouseholderTran_FDRM
extends java.lang.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.
QRDecompositionHouseholder_FDRM
Modifier and Type | Field and Description |
---|---|
protected boolean |
error |
protected float |
gamma |
protected float[] |
gammas |
protected int |
minLength |
protected int |
numCols |
protected int |
numRows |
protected org.ejml.data.FMatrixRMaj |
QR
Where the Q and R matrices are stored.
|
protected float |
tau |
protected float[] |
v |
Constructor and Description |
---|
QRDecompositionHouseholderTran_FDRM() |
Modifier and Type | Method and Description |
---|---|
void |
applyQ(org.ejml.data.FMatrixRMaj A)
A = Q*A
|
void |
applyTranQ(org.ejml.data.FMatrixRMaj A)
A = QT*A
|
boolean |
decompose(org.ejml.data.FMatrixRMaj A)
To decompose the matrix 'A' it must have full rank.
|
float[] |
getGammas() |
org.ejml.data.FMatrixRMaj |
getQ(org.ejml.data.FMatrixRMaj Q,
boolean compact)
Computes the Q matrix from the information stored in the QR matrix.
|
org.ejml.data.FMatrixRMaj |
getQR()
Inner matrix that stores the decomposition
|
org.ejml.data.FMatrixRMaj |
getR(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 |
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*uT)A |
protected org.ejml.data.FMatrixRMaj QR
protected float[] v
protected int numCols
protected int numRows
protected int minLength
protected float[] gammas
protected float gamma
protected float tau
protected boolean error
public void setExpectedMaxSize(int numRows, int numCols)
public org.ejml.data.FMatrixRMaj getQR()
public org.ejml.data.FMatrixRMaj getQ(org.ejml.data.FMatrixRMaj Q, boolean compact)
getQ
in interface org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.FMatrixRMaj>
Q
- The orthogonal Q matrix.public void applyQ(org.ejml.data.FMatrixRMaj A)
A
- Matrix that is being multiplied by Q. Is modified.public void applyTranQ(org.ejml.data.FMatrixRMaj A)
A
- Matrix that is being multiplied by QT. Is modified.public org.ejml.data.FMatrixRMaj getR(org.ejml.data.FMatrixRMaj R, boolean compact)
getR
in interface org.ejml.interfaces.decomposition.QRDecomposition<org.ejml.data.FMatrixRMaj>
R
- An upper triangular matrix.compact
- 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.
decompose
in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>
public boolean inputModified()
inputModified
in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>
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 - γ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*uT)A
w
- The submatrix.public float[] getGammas()