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 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> getDecomposer()  
    org.ejml.interfaces.decomposition.SingularValueDecomposition_F64<org.ejml.data.DMatrixRMaj> getDecomposition()  
    void invert​(org.ejml.data.DMatrixRMaj A_inv)  
    boolean modifiesA()  
    boolean modifiesB()  
    double quality()  
    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()