public class BidiagonalDecompositionTall_D64
extends java.lang.Object
implements org.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DenseMatrix64F>
BidiagonalDecomposition specifically designed for tall matrices.
First step is to perform QR decomposition on the input matrix. Then R is decomposed using
a bidiagonal decomposition. By performing the bidiagonal decomposition on the smaller matrix
computations can be saved if m/n > 5/3 and if U is NOT needed.
A = [Q1 Q2][U1 0; 0 I] [B1;0] VT
U=[Q1*U1 Q2]
B=[B1;0]
A = U*B*VT
A QRP decomposition is used internally. That decomposition relies an a fixed threshold for selecting singular values and is known to be less stable than SVD. There is the potential for a degregation of stability by using BidiagonalDecompositionTall instead of BidiagonalDecomposition. A few simple tests have shown that loss in stability to be insignificant.
See page 404 in "Fundamentals of Matrix Computations", 2nd by David S. Watkins.
| Constructor and Description |
|---|
BidiagonalDecompositionTall_D64() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
decompose(org.ejml.data.DenseMatrix64F orig) |
org.ejml.data.DenseMatrix64F |
getB(org.ejml.data.DenseMatrix64F B,
boolean compact) |
void |
getDiagonal(double[] diag,
double[] off) |
org.ejml.data.DenseMatrix64F |
getU(org.ejml.data.DenseMatrix64F U,
boolean transpose,
boolean compact) |
org.ejml.data.DenseMatrix64F |
getV(org.ejml.data.DenseMatrix64F V,
boolean transpose,
boolean compact) |
boolean |
inputModified() |
public void getDiagonal(double[] diag,
double[] off)
getDiagonal in interface org.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DenseMatrix64F>public org.ejml.data.DenseMatrix64F getB(org.ejml.data.DenseMatrix64F B,
boolean compact)
getB in interface org.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DenseMatrix64F>public org.ejml.data.DenseMatrix64F getU(org.ejml.data.DenseMatrix64F U,
boolean transpose,
boolean compact)
getU in interface org.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DenseMatrix64F>public org.ejml.data.DenseMatrix64F getV(org.ejml.data.DenseMatrix64F V,
boolean transpose,
boolean compact)
getV in interface org.ejml.interfaces.decomposition.BidiagonalDecomposition<org.ejml.data.DenseMatrix64F>public boolean decompose(org.ejml.data.DenseMatrix64F orig)
decompose in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.DenseMatrix64F>public boolean inputModified()
inputModified in interface org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.DenseMatrix64F>