public class SolvePseudoInverseSvd_FDRM
extends java.lang.Object
implements org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>
The pseudo-inverse is typically used to solve over determined system for which there is no unique solution.
x=inv(ATA)ATb
where A ∈ ℜ m × n and m ≥ n.
This class implements the Moore-Penrose pseudo-inverse using SVD and should never fail. Alternative implementations can use Cholesky decomposition, but those will fail if the ATA matrix is singular. However the Cholesky implementation is much faster.
| Constructor and Description |
|---|
SolvePseudoInverseSvd_FDRM()
Creates a solver targeted at matrices around 100x100
|
SolvePseudoInverseSvd_FDRM(int maxRows,
int maxCols)
Creates a new solver targeted at the specified matrix size.
|
| Modifier and Type | Method and Description |
|---|---|
org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj> |
getDecomposer() |
org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj> |
getDecomposition() |
void |
invert(org.ejml.data.FMatrixRMaj A_inv) |
boolean |
modifiesA() |
boolean |
modifiesB() |
double |
quality() |
boolean |
setA(org.ejml.data.FMatrixRMaj A) |
void |
setThreshold(float threshold)
Specify the relative threshold used to select singular values.
|
void |
solve(org.ejml.data.FMatrixRMaj b,
org.ejml.data.FMatrixRMaj x) |
public SolvePseudoInverseSvd_FDRM(int maxRows,
int maxCols)
maxRows - The expected largest matrix it might have to process. Can be larger.maxCols - The expected largest matrix it might have to process. Can be larger.public SolvePseudoInverseSvd_FDRM()
public boolean setA(org.ejml.data.FMatrixRMaj A)
setA in interface org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.FMatrixRMaj,org.ejml.data.FMatrixRMaj>public double quality()
quality in interface org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.FMatrixRMaj,org.ejml.data.FMatrixRMaj>public void solve(org.ejml.data.FMatrixRMaj b,
org.ejml.data.FMatrixRMaj x)
solve in interface org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.FMatrixRMaj,org.ejml.data.FMatrixRMaj>public void invert(org.ejml.data.FMatrixRMaj A_inv)
invert in interface org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.FMatrixRMaj>public boolean modifiesA()
modifiesA in interface org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.FMatrixRMaj,org.ejml.data.FMatrixRMaj>public boolean modifiesB()
modifiesB in interface org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.FMatrixRMaj,org.ejml.data.FMatrixRMaj>public org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj> getDecomposition()
getDecomposition in interface org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.FMatrixRMaj,org.ejml.data.FMatrixRMaj>public void setThreshold(float threshold)
threshold - The singular value thresholdpublic org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.FMatrixRMaj> getDecomposer()