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>
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 Summary
Constructors Constructor Description SolvePseudoInverseSvd_FDRM()Creates a solver targeted at matrices around 100x100SolvePseudoInverseSvd_FDRM(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.FMatrixRMaj>getDecomposer()org.ejml.interfaces.decomposition.SingularValueDecomposition_F32<org.ejml.data.FMatrixRMaj>getDecomposition()voidinvert(org.ejml.data.FMatrixRMaj A_inv)booleanmodifiesA()booleanmodifiesB()doublequality()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 Detail
-
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 Detail
-
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()
-
-