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
All Methods Instance Methods Concrete Methods 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 Detail
-
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 Detail
-
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()
-
-