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 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 100x100
    SolvePseudoInverseSvd_FDRM​(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.FMatrixRMaj> getDecomposer()  
    org.ejml.interfaces.decomposition.SingularValueDecomposition_F32<org.ejml.data.FMatrixRMaj> getDecomposition()  
    void invert​(org.ejml.data.FMatrixRMaj A_inv)  
    boolean modifiesA()  
    boolean modifiesB()  
    double quality()  
    boolean setA​(org.ejml.data.FMatrixRMaj A)  
    void setThreshold​(float threshold)
    Specify the relative threshold used to select singular values.
    void solve​(org.ejml.data.FMatrixRMaj b, org.ejml.data.FMatrixRMaj x)  

    Methods inherited from class java.lang.Object

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

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

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

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

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