Class SingularOps_FDRM


  • public class SingularOps_FDRM
    extends java.lang.Object
    Operations related to singular value decomposition.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void checkSvdMatrixSize​(org.ejml.data.FMatrixRMaj U, boolean tranU, org.ejml.data.FMatrixRMaj W, org.ejml.data.FMatrixRMaj V, boolean tranV)
      Checks to see if all the provided matrices are the expected size for an SVD.
      static void descendingOrder​(org.ejml.data.FMatrixRMaj U, boolean tranU, float[] singularValues, int singularLength, org.ejml.data.FMatrixRMaj V, boolean tranV)
      Similar to descendingOrder(FMatrixRMaj, boolean, FMatrixRMaj, FMatrixRMaj, boolean) but takes in an array of singular values instead.
      static void descendingOrder​(org.ejml.data.FMatrixRMaj U, boolean tranU, org.ejml.data.FMatrixRMaj W, org.ejml.data.FMatrixRMaj V, boolean tranV)
      Adjusts the matrices so that the singular values are in descending order.
      static int nullity​(org.ejml.data.FMatrixRMaj A, float threshold)
      Returns the matrix's nullity
      static int nullity​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd)
      Extracts the nullity of a matrix using a preexisting decomposition and default threshold.
      static int nullity​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd, float threshold)
      Extracts the nullity of a matrix using a preexisting decomposition.
      static org.ejml.data.FMatrixRMaj nullSpace​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32<org.ejml.data.FMatrixRMaj> svd, org.ejml.data.FMatrixRMaj nullSpace, float tol)
      Returns the null-space from the singular value decomposition.
      static org.ejml.data.FMatrixRMaj nullspaceQR​(org.ejml.data.FMatrixRMaj A, int totalSingular)
      Computes the null space using QR decomposition.
      static org.ejml.data.FMatrixRMaj nullspaceQRP​(org.ejml.data.FMatrixRMaj A, int totalSingular)
      Computes the null space using QRP decomposition.
      static org.ejml.data.FMatrixRMaj nullspaceSVD​(org.ejml.data.FMatrixRMaj A, int totalSingular)
      Computes the null space using SVD.
      static org.ejml.data.FMatrixRMaj nullVector​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32<org.ejml.data.FMatrixRMaj> svd, boolean isRight, org.ejml.data.FMatrixRMaj nullVector)
      The vector associated will the smallest singular value is returned as the null space of the decomposed system.
      static int rank​(org.ejml.data.FMatrixRMaj A)
      Returns the matrix's rank.
      static int rank​(org.ejml.data.FMatrixRMaj A, float threshold)
      Returns the matrix's rank
      static int rank​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd)
      Extracts the rank of a matrix using a preexisting decomposition and default threshold.
      static int rank​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd, float threshold)
      Extracts the rank of a matrix using a preexisting decomposition.
      static float ratioSmallestOverLargest​(float[] sv)
      Computes the ratio of the smallest value to the largest.
      static float singularThreshold​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd)
      Returns a reasonable threshold for singular values.

      tol = max (size (A)) * largest sigma * eps;
      static float singularThreshold​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd, float tolerance)  
      static float[] singularValues​(org.ejml.data.FMatrixRMaj A)
      Returns an array of all the singular values in A sorted in ascending order
      static boolean svd​(org.ejml.data.FMatrixRMaj A, org.ejml.data.FMatrixRMaj U, org.ejml.data.FGrowArray sv, org.ejml.data.FMatrixRMaj Vt)
      Computes the SVD and sorts singular values in descending order.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SingularOps_FDRM

        public SingularOps_FDRM()
    • Method Detail

      • singularValues

        public static float[] singularValues​(org.ejml.data.FMatrixRMaj A)
        Returns an array of all the singular values in A sorted in ascending order
        Parameters:
        A - Matrix. Not modified.
        Returns:
        singular values
      • ratioSmallestOverLargest

        public static float ratioSmallestOverLargest​(float[] sv)
        Computes the ratio of the smallest value to the largest. Does not assume the array is sorted first
        Parameters:
        sv - array
        Returns:
        smallest / largest
      • rank

        public static int rank​(org.ejml.data.FMatrixRMaj A,
                               float threshold)
        Returns the matrix's rank
        Parameters:
        A - Matrix. Not modified.
        threshold - Tolerance used to determine of a singular value is singular.
        Returns:
        The rank of the decomposed matrix.
      • rank

        public static int rank​(org.ejml.data.FMatrixRMaj A)
        Returns the matrix's rank. Automatic selection of threshold
        Parameters:
        A - Matrix. Not modified.
        Returns:
        The rank of the decomposed matrix.
      • svd

        public static boolean svd​(org.ejml.data.FMatrixRMaj A,
                                  @Nullable
                                  org.ejml.data.FMatrixRMaj U,
                                  org.ejml.data.FGrowArray sv,
                                  @Nullable
                                  org.ejml.data.FMatrixRMaj Vt)
        Computes the SVD and sorts singular values in descending order. While easier to use this can reduce performance when performed on small matrices numerous times. U*W*VT = A
        Parameters:
        A - (Input) Matrix being decomposed
        U - (Output) Storage for U. If null then it's ignored.
        sv - (Output) sorted list of singular values. Can be null.
        Vt - (Output) Storage for transposed V. Can be null.
      • descendingOrder

        public static void descendingOrder​(org.ejml.data.FMatrixRMaj U,
                                           boolean tranU,
                                           org.ejml.data.FMatrixRMaj W,
                                           org.ejml.data.FMatrixRMaj V,
                                           boolean tranV)

        Adjusts the matrices so that the singular values are in descending order.

        In most implementations of SVD the singular values are automatically arranged in in descending order. In EJML this is not the case since it is often not needed and some computations can be saved by not doing that.

        Parameters:
        U - Matrix. Modified.
        tranU - is U transposed or not.
        W - Diagonal matrix with singular values. Modified.
        V - Matrix. Modified.
        tranV - is V transposed or not.
      • descendingOrder

        public static void descendingOrder​(org.ejml.data.FMatrixRMaj U,
                                           boolean tranU,
                                           float[] singularValues,
                                           int singularLength,
                                           org.ejml.data.FMatrixRMaj V,
                                           boolean tranV)

        Similar to descendingOrder(FMatrixRMaj, boolean, FMatrixRMaj, FMatrixRMaj, boolean) but takes in an array of singular values instead.

        Parameters:
        U - Matrix. Modified.
        tranU - is U transposed or not.
        singularValues - Array of singular values. Modified.
        singularLength - Number of elements in singularValues array
        V - Matrix. Modified.
        tranV - is V transposed or not.
      • checkSvdMatrixSize

        public static void checkSvdMatrixSize​(org.ejml.data.FMatrixRMaj U,
                                              boolean tranU,
                                              org.ejml.data.FMatrixRMaj W,
                                              org.ejml.data.FMatrixRMaj V,
                                              boolean tranV)
        Checks to see if all the provided matrices are the expected size for an SVD. If an error is encountered then an exception is thrown. This automatically handles compact and non-compact formats
      • nullSpace

        public static org.ejml.data.FMatrixRMaj nullSpace​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32<org.ejml.data.FMatrixRMaj> svd,
                                                          org.ejml.data.FMatrixRMaj nullSpace,
                                                          float tol)

        Returns the null-space from the singular value decomposition. The null space is a set of non-zero vectors that when multiplied by the original matrix return zero.

        The null space is found by extracting the columns in V that are associated singular values less than or equal to the threshold. In some situations a non-compact SVD is required.

        Parameters:
        svd - A precomputed decomposition. Not modified.
        nullSpace - Storage for null space. Will be reshaped as needed. Modified.
        tol - Threshold for selecting singular values. Try UtilEjml.F_EPS.
        Returns:
        The null space.
      • nullspaceQR

        public static org.ejml.data.FMatrixRMaj nullspaceQR​(org.ejml.data.FMatrixRMaj A,
                                                            int totalSingular)
        Computes the null space using QR decomposition. This is much faster than using SVD
        Parameters:
        A - (Input) Matrix
        totalSingular - Number of singular values
        Returns:
        Null space
      • nullspaceQRP

        public static org.ejml.data.FMatrixRMaj nullspaceQRP​(org.ejml.data.FMatrixRMaj A,
                                                             int totalSingular)
        Computes the null space using QRP decomposition. This is faster than using SVD but slower than QR. Much more stable than QR though.
        Parameters:
        A - (Input) Matrix
        totalSingular - Number of singular values
        Returns:
        Null space
      • nullspaceSVD

        public static org.ejml.data.FMatrixRMaj nullspaceSVD​(org.ejml.data.FMatrixRMaj A,
                                                             int totalSingular)
        Computes the null space using SVD. Slowest bust most stable way to find the solution
        Parameters:
        A - (Input) Matrix
        totalSingular - Number of singular values
        Returns:
        Null space
      • nullVector

        public static org.ejml.data.FMatrixRMaj nullVector​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32<org.ejml.data.FMatrixRMaj> svd,
                                                           boolean isRight,
                                                           org.ejml.data.FMatrixRMaj nullVector)

        The vector associated will the smallest singular value is returned as the null space of the decomposed system. A right null space is returned if 'isRight' is set to true, and a left null space if false.

        Parameters:
        svd - A precomputed decomposition. Not modified.
        isRight - true for right null space and false for left null space. Right is more commonly used.
        nullVector - Optional storage for a vector for the null space. Modified.
        Returns:
        Vector in V associated with smallest singular value..
      • singularThreshold

        public static float singularThreshold​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd)
        Returns a reasonable threshold for singular values.

        tol = max (size (A)) * largest sigma * eps;
        Parameters:
        svd - A precomputed decomposition. Not modified.
        Returns:
        threshold for singular values
      • singularThreshold

        public static float singularThreshold​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd,
                                              float tolerance)
      • rank

        public static int rank​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd)
        Extracts the rank of a matrix using a preexisting decomposition and default threshold.
        Parameters:
        svd - A precomputed decomposition. Not modified.
        Returns:
        The rank of the decomposed matrix.
        See Also:
        singularThreshold(SingularValueDecomposition_F32)
      • rank

        public static int rank​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd,
                               float threshold)
        Extracts the rank of a matrix using a preexisting decomposition.
        Parameters:
        svd - A precomputed decomposition. Not modified.
        threshold - Tolerance used to determine of a singular value is singular.
        Returns:
        The rank of the decomposed matrix.
        See Also:
        singularThreshold(SingularValueDecomposition_F32)
      • nullity

        public static int nullity​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd)
        Extracts the nullity of a matrix using a preexisting decomposition and default threshold.
        Parameters:
        svd - A precomputed decomposition. Not modified.
        Returns:
        The nullity of the decomposed matrix.
        See Also:
        singularThreshold(SingularValueDecomposition_F32)
      • nullity

        public static int nullity​(org.ejml.interfaces.decomposition.SingularValueDecomposition_F32 svd,
                                  float threshold)
        Extracts the nullity of a matrix using a preexisting decomposition.
        Parameters:
        svd - A precomputed decomposition. Not modified.
        threshold - Tolerance used to determine of a singular value is singular.
        Returns:
        The nullity of the decomposed matrix.
        See Also:
        singularThreshold(SingularValueDecomposition_F32)
      • nullity

        public static int nullity​(org.ejml.data.FMatrixRMaj A,
                                  float threshold)
        Returns the matrix's nullity
        Parameters:
        A - Matrix. Not modified.
        threshold - Tolerance used to determine of a singular value is singular.
        Returns:
        nullity