Class 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.

    • 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()  
      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 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:
        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()