Package org.ejml.dense.row.linsol.svd
Class SolvePseudoInverseSvd_DDRM
java.lang.Object
org.ejml.dense.row.linsol.svd.SolvePseudoInverseSvd_DDRM
- All Implemented Interfaces:
org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>,org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.DMatrixRMaj>
public class SolvePseudoInverseSvd_DDRM
extends java.lang.Object
implements org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.DMatrixRMaj>
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 Summary
Constructors Constructor Description SolvePseudoInverseSvd_DDRM()Creates a solver targeted at matrices around 100x100SolvePseudoInverseSvd_DDRM(int maxRows, int maxCols)Creates a new solver targeted at the specified matrix size. -
Method Summary
Modifier and Type Method Description org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.DMatrixRMaj>getDecomposer()org.ejml.interfaces.decomposition.SingularValueDecomposition_F64<org.ejml.data.DMatrixRMaj>getDecomposition()voidinvert(org.ejml.data.DMatrixRMaj A_inv)booleanmodifiesA()booleanmodifiesB()doublequality()booleansetA(org.ejml.data.DMatrixRMaj A)voidsetThreshold(double threshold)Specify the relative threshold used to select singular values.voidsolve(org.ejml.data.DMatrixRMaj b, org.ejml.data.DMatrixRMaj x)
-
Constructor Details
-
SolvePseudoInverseSvd_DDRM
public SolvePseudoInverseSvd_DDRM(int maxRows, int maxCols)Creates a new solver targeted at the specified matrix size.- Parameters:
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.
-
SolvePseudoInverseSvd_DDRM
public SolvePseudoInverseSvd_DDRM()Creates a solver targeted at matrices around 100x100
-
-
Method Details
-
setA
public boolean setA(org.ejml.data.DMatrixRMaj A)- Specified by:
setAin interfaceorg.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>
-
quality
public double quality()- Specified by:
qualityin interfaceorg.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>
-
solve
public void solve(org.ejml.data.DMatrixRMaj b, org.ejml.data.DMatrixRMaj x)- Specified by:
solvein interfaceorg.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>
-
invert
public void invert(org.ejml.data.DMatrixRMaj A_inv)- Specified by:
invertin interfaceorg.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.DMatrixRMaj>
-
modifiesA
public boolean modifiesA()- Specified by:
modifiesAin interfaceorg.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>
-
modifiesB
public boolean modifiesB()- Specified by:
modifiesBin interfaceorg.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>
-
getDecomposition
public org.ejml.interfaces.decomposition.SingularValueDecomposition_F64<org.ejml.data.DMatrixRMaj> getDecomposition()- Specified by:
getDecompositionin interfaceorg.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>
-
setThreshold
public void setThreshold(double threshold)Specify the relative threshold used to select singular values. By default it's UtilEjml.EPS.- Parameters:
threshold- The singular value threshold
-
getDecomposer
public org.ejml.interfaces.decomposition.SingularValueDecomposition<org.ejml.data.DMatrixRMaj> getDecomposer()
-