Class SingularValueDecomposition

  • All Implemented Interfaces:
    java.io.Serializable

    public class SingularValueDecomposition
    extends java.lang.Object
    implements java.io.Serializable
    For an m x n matrix A with m >= n, the singular value decomposition is an m x n orthogonal matrix U, an n x n diagonal matrix S, and an n x n orthogonal matrix V so that A = U*S*V'.

    The singular values, sigma[k] = S[k][k], are ordered so that sigma[0] >= sigma[1] >= ... >= sigma[n-1].

    The singular value decomposition always exists, so the constructor will never fail. The matrix condition number and the effective numerical rank can be computed from this decomposition.

    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private int m
      Row and column dimensions.
      private int n
      Row and column dimensions.
      private double[] s
      Array for internal storage of singular values.
      (package private) static long serialVersionUID  
      private double[][] U
      Arrays for internal storage of U and V.
      private double[][] V
      Arrays for internal storage of U and V.
    • Constructor Summary

      Constructors 
      Constructor Description
      SingularValueDecomposition​(DoubleMatrix2D Arg)
      Constructs and returns a new singular value decomposition object; The decomposed matrices can be retrieved via instance methods of the returned decomposition object.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double cond()
      Returns the two norm condition number, which is max(S) / min(S).
      DoubleMatrix2D getS()
      Returns the diagonal matrix of singular values.
      double[] getSingularValues()
      Returns the diagonal of S, which is a one-dimensional array of singular values
      DoubleMatrix2D getU()
      Returns the left singular vectors U.
      DoubleMatrix2D getV()
      Returns the right singular vectors V.
      double norm2()
      Returns the two norm, which is max(S).
      int rank()
      Returns the effective numerical matrix rank, which is the number of nonnegligible singular values.
      java.lang.String toString()
      Returns a String with (propertyName, propertyValue) pairs.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • U

        private double[][] U
        Arrays for internal storage of U and V.
      • V

        private double[][] V
        Arrays for internal storage of U and V.
      • s

        private double[] s
        Array for internal storage of singular values.
      • m

        private int m
        Row and column dimensions.
      • n

        private int n
        Row and column dimensions.
    • Constructor Detail

      • SingularValueDecomposition

        public SingularValueDecomposition​(DoubleMatrix2D Arg)
        Constructs and returns a new singular value decomposition object; The decomposed matrices can be retrieved via instance methods of the returned decomposition object.
        Parameters:
        A - A rectangular matrix.
        Throws:
        java.lang.IllegalArgumentException - if A.rows() < A.columns().
    • Method Detail

      • cond

        public double cond()
        Returns the two norm condition number, which is max(S) / min(S).
      • getS

        public DoubleMatrix2D getS()
        Returns the diagonal matrix of singular values.
        Returns:
        S
      • getSingularValues

        public double[] getSingularValues()
        Returns the diagonal of S, which is a one-dimensional array of singular values
        Returns:
        diagonal of S.
      • getU

        public DoubleMatrix2D getU()
        Returns the left singular vectors U.
        Returns:
        U
      • getV

        public DoubleMatrix2D getV()
        Returns the right singular vectors V.
        Returns:
        V
      • norm2

        public double norm2()
        Returns the two norm, which is max(S).
      • rank

        public int rank()
        Returns the effective numerical matrix rank, which is the number of nonnegligible singular values.
      • toString

        public java.lang.String toString()
        Returns a String with (propertyName, propertyValue) pairs. Useful for debugging or to quickly get the rough picture. For example,
        rank          : 3
        trace         : 0
        
        Overrides:
        toString in class java.lang.Object