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 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
    Creates a solver targeted at matrices around 100x100
    SolvePseudoInverseSvd_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>
     
    org.ejml.interfaces.decomposition.SingularValueDecomposition_F64<org.ejml.data.DMatrixRMaj>
     
    void
    invert(org.ejml.data.DMatrixRMaj A_inv)
     
    boolean
     
    boolean
     
    double
     
    boolean
    setA(org.ejml.data.DMatrixRMaj A)
     
    void
    setThreshold(double threshold)
    Specify the relative threshold used to select singular values.
    void
    solve(org.ejml.data.DMatrixRMaj b, org.ejml.data.DMatrixRMaj x)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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:
      setA in interface org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>
    • quality

      public double quality()
      Specified by:
      quality in interface org.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:
      solve in interface org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>
    • invert

      public void invert(org.ejml.data.DMatrixRMaj A_inv)
      Specified by:
      invert in interface org.ejml.interfaces.linsol.LinearSolverDense<org.ejml.data.DMatrixRMaj>
    • modifiesA

      public boolean modifiesA()
      Specified by:
      modifiesA in interface org.ejml.interfaces.linsol.LinearSolver<org.ejml.data.DMatrixRMaj,org.ejml.data.DMatrixRMaj>
    • modifiesB

      public boolean modifiesB()
      Specified by:
      modifiesB in interface org.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:
      getDecomposition in interface org.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()