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