Class MatrixUtils

java.lang.Object
edu.cmu.tetrad.util.MatrixUtils

public final class MatrixUtils extends Object
Class Matrix includes several public static functions performing matrix operations. These function include: determinant, GJinverse, inverse, multiple, difference, transpose, trace, duplicate, minor, identity, mprint, impliedCovar, SEMimpliedCovar.
Author:
Tianjiao Chu, josephramsey, Kevin V. Bui
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static double[][]
    asRow(double[] v)
     
    static Matrix
     
    static double[]
    concatenate(double[][] vectors)
    Concatenates the vectors rows[i], i = 0...rows.length, into a single vector.
    static Matrix
    Converts a covariance matrix to a correlation matrix in place; the same matrix is returned for convenience, but m is modified in the process.
    static double[][]
    Converts a matrix in lower triangular form to a symmetric matrix in square form.
    static double[][]
    copyOf(double[][] arr)
     
    static int[]
    copyOf(int[] arr, int length)
     
    static double
    determinant(double[][] m)
     
    static double[][]
    directProduct(double[][] ma, double[][] mb)
    Computes the direct (Kronecker) outerProduct.
    static boolean
    equals(double[][] ma, double[][] mb)
    Tests two matrices for equality.
    static boolean
    equals(double[][] ma, double[][] mb, double tolerance)
    Tests to see whether two matrices are equal within the given tolerance.
    static boolean
    equals(double[] va, double[] vb)
    Tests two vectors for equality.
    static boolean
    equals(double[] va, double[] vb, double tolerance)
    Tests to see whether two vectors are equal within the given tolerance.
    static boolean
    hasDimensions(double[][] m, int i, int j)
     
    static double[][]
    identity(int size)
     
    static Matrix
    impliedCovar(Matrix edgeCoef, Matrix errCovar)
     
    static Matrix
    impliedCovar2(Matrix edgeCoef, Matrix errCovar)
     
    static double
    innerProduct(double[] ma, double[] mb)
     
    static double[][]
    inverse(double[][] m)
     
    static double[][]
    invVech(double[] vech)
     
    static boolean
    Return true if the given matrix is symmetric positive definite--that is, if it would make a valid covariance matrix.
    static boolean
    isSquare(double[][] m)
     
    static boolean
    isSymmetric(double[][] m, double tolerance)
     
    static double[][]
    outerProduct(double[] ma, double[] mb)
     
    static double[]
    product(double[][] ma, double[] mb)
     
    static double[][]
    product(double[][] ma, double[][] mb)
     
    static double[]
    product(double[] ma, double[][] mb)
     
    static Vector
     
    static double[][]
    pseudoInverse(double[][] x)
     
    static double[][]
    repmat(double[][] mat, int n)
    Make a n repeat copy of the rows and columns of the matrix mat.
    static double[][]
    repmat(double[][] mat, int nRow, int mColumn)
    Make a repeat copy of matrix mat.
    static double[]
    scalarProduct(double scalar, double[] m)
     
    static double[][]
    scalarProduct(double scalar, double[][] m)
    Multiplies the given matrix through by the given scalar.
    static double[][]
    submatrix(double[][] m, int rem)
    A copy of the original (square) matrix with the stated index row/column removed
    static double[][]
    subtract(double[][] ma, double[][] mb)
     
    static double[]
    subtract(double[] ma, double[] mb)
     
    static double[][]
    sum(double[][] ma, double[][] mb)
     
    static double[]
    sum(double[] ma, double[] mb)
     
    static int
    sum0ToN(int n)
     
    static String
    toString(boolean[][] m)
    Copies the given array, starting each line with a tab character..
    static String
    toString(double[] m)
     
    static String
    toString(double[][] m)
    Copies the given array, using a standard scientific notation number formatter and beginning each line with a tab character.
    static String
    toString(double[][] m, List<String> variables)
     
    static String
    toString(double[] m, NumberFormat nf)
     
    static String
    toString(int[] m)
     
    static String
    toString(int[][] m)
     
    static String
    toString(int[][] m, List<String> variables)
     
    static String
    toStringSquare(double[][] m, NumberFormat nf, List<String> variables)
     
    static String
    toStringSquare(double[][] m, List<String> variables)
     
    static String
    toStringSquare(int[][] m, List<String> variables)
     
    static double
    trace(double[][] m)
     
    static double[][]
    transpose(double[][] m)
     
    static org.apache.commons.math3.linear.RealMatrix
    transposeWithoutCopy(org.apache.commons.math3.linear.RealMatrix apacheData)
     
    static double[][]
    vec(double[][] m)
     
    static double[][]
    vech(double[][] m)
     
    static double[][]
    The matrix which, when postmultiplied by vech, return vec.
    static double[][]
    zeros(int rows, int cols)
     
    static double
    zSum(double[][] m)
     

    Methods inherited from class java.lang.Object

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

    • MatrixUtils

      public MatrixUtils()
  • Method Details

    • repmat

      public static double[][] repmat(double[][] mat, int nRow, int mColumn)
      Make a repeat copy of matrix mat.
      Parameters:
      mat - matrix to copy
      nRow - number of repeat copy of row
      mColumn - number of repeat copy of column
    • repmat

      public static double[][] repmat(double[][] mat, int n)
      Make a n repeat copy of the rows and columns of the matrix mat.
      Parameters:
      n - number of repeat copy
    • equals

      public static boolean equals(double[][] ma, double[][] mb)
      Tests two matrices for equality.
      Parameters:
      ma - The first 2D matrix to check.
      mb - The second 2D matrix to check.
      Returns:
      True iff the first and second matrices are equal.
    • equals

      public static boolean equals(double[] va, double[] vb)
      Tests two vectors for equality.
      Parameters:
      va - The first 1D matrix to check.
      vb - The second 1D matrix to check.
      Returns:
      True iff the first and second matrices are equal.
    • equals

      public static boolean equals(double[][] ma, double[][] mb, double tolerance)
      Tests to see whether two matrices are equal within the given tolerance. If any two corresponding elements differ by more than the given tolerance, false is returned.
      Parameters:
      ma - The first 2D matrix to check.
      mb - The second 2D matrix to check.
      tolerance - A double >= 0.
      Returns:
      Ibid.
    • equals

      public static boolean equals(double[] va, double[] vb, double tolerance)
      Tests to see whether two vectors are equal within the given tolerance. If any two corresponding elements differ by more than the given tolerance, false is returned.
      Parameters:
      va - The first matrix to check.
      vb - The second matrix to check.
      tolerance - A double >= 0.
      Returns:
      Ibid.
    • isSquare

      public static boolean isSquare(double[][] m)
      Parameters:
      m - A 2D double matrix.
      Returns:
      Ibid.
    • isSymmetric

      public static boolean isSymmetric(double[][] m, double tolerance)
      Parameters:
      m - The matrix to check.
      tolerance - A double >= 0.
      Returns:
      Ibid.
    • determinant

      public static double determinant(double[][] m)
      Parameters:
      m - The matrix whose determinant is sought. Must be square.
      Returns:
      Ibid.
    • submatrix

      public static double[][] submatrix(double[][] m, int rem)
      A copy of the original (square) matrix with the stated index row/column removed
    • inverse

      public static double[][] inverse(double[][] m)
      Returns:
      the inverse of the given square matrix if it is nonsingular, otherwise the pseudoinverse.
    • pseudoInverse

      public static double[][] pseudoInverse(double[][] x)
    • product

      public static double[][] product(double[][] ma, double[][] mb)
      Returns:
      the outerProduct of ma and mb. The dimensions of ma and mb must be compatible for multiplication.
    • product

      public static double[] product(double[] ma, double[][] mb)
    • product

      public static Vector product(Vector ma, Matrix mb)
    • product

      public static double[] product(double[][] ma, double[] mb)
    • outerProduct

      public static double[][] outerProduct(double[] ma, double[] mb)
    • innerProduct

      public static double innerProduct(double[] ma, double[] mb)
    • transpose

      public static double[][] transpose(double[][] m)
      Returns:
      the transpose of the given matrix.
    • trace

      public static double trace(double[][] m)
      Returns:
      the trace of the given (square) m.
    • zSum

      public static double zSum(double[][] m)
    • identity

      public static double[][] identity(int size)
      Returns:
      the identity matrix of the given order.
    • sum

      public static double[][] sum(double[][] ma, double[][] mb)
      Returns:
      the sum of ma and mb.
    • sum

      public static double[] sum(double[] ma, double[] mb)
    • subtract

      public static double[][] subtract(double[][] ma, double[][] mb)
    • subtract

      public static double[] subtract(double[] ma, double[] mb)
    • directProduct

      public static double[][] directProduct(double[][] ma, double[][] mb)
      Computes the direct (Kronecker) outerProduct.
    • scalarProduct

      public static double[][] scalarProduct(double scalar, double[][] m)
      Multiplies the given matrix through by the given scalar.
    • scalarProduct

      public static double[] scalarProduct(double scalar, double[] m)
    • concatenate

      public static double[] concatenate(double[][] vectors)
      Concatenates the vectors rows[i], i = 0...rows.length, into a single vector.
    • asRow

      public static double[][] asRow(double[] v)
      Returns:
      the vector as a 1 x n row matrix.
    • impliedCovar2

      public static Matrix impliedCovar2(Matrix edgeCoef, Matrix errCovar)
      Parameters:
      edgeCoef - The edge covariance matrix. edgeCoef(i, j) is a parameter in this matrix just in case i-->j is an edge in the model. All other entries in the matrix are zero.
      errCovar - The error covariance matrix. errCovar(i, i) is the variance of i; off-diagonal errCovar(i, j) are covariance parameters that are specified in the model. All other matrix entries are zero.
      Returns:
      The implied covariance matrix, which is the covariance matrix over the measured variables that is implied by all the given information.
      Throws:
      IllegalArgumentException - if edgeCoef or errCovar contains an undefined value (Double.NaN).
    • impliedCovar

      public static Matrix impliedCovar(Matrix edgeCoef, Matrix errCovar)
    • vech

      public static double[][] vech(double[][] m)
      Returns:
      vech of the given array. (This is what you get when you stack all of the elements of m in the lower triangular of m to form a vector. The elements are stacked in columns left to right, top to bottom.)
    • invVech

      public static double[][] invVech(double[] vech)
      Returns:
      the symmetric matrix for which the given array is the vech.
    • vec

      public static double[][] vec(double[][] m)
      Returns:
      vech of the given array. (This is what you get when you stack all of the elements of m to form a vector. The elements are stacked in columns left to right, top to bottom.)
    • sum0ToN

      public static int sum0ToN(int n)
      Returns:
      the sum of integers from 0 up to n.
    • vechToVecLeft

      public static double[][] vechToVecLeft(int n)
      The matrix which, when postmultiplied by vech, return vec.
      Parameters:
      n - the size of the square matrix that vec and vech come from.
    • hasDimensions

      public static boolean hasDimensions(double[][] m, int i, int j)
      Returns:
      true just in case the given matrix has the given dimensions --that is, just in case m.length == i and m[0].length == j.
    • zeros

      public static double[][] zeros(int rows, int cols)
    • isPositiveDefinite

      public static boolean isPositiveDefinite(Matrix matrix)
      Return true if the given matrix is symmetric positive definite--that is, if it would make a valid covariance matrix.
    • cholesky

      public static Matrix cholesky(Matrix covar)
    • convertCovToCorr

      public static Matrix convertCovToCorr(Matrix m)
      Converts a covariance matrix to a correlation matrix in place; the same matrix is returned for convenience, but m is modified in the process.
    • convertLowerTriangleToSymmetric

      public static double[][] convertLowerTriangleToSymmetric(double[][] arr)
      Converts a matrix in lower triangular form to a symmetric matrix in square form. The lower triangular matrix need not contain matrix elements to represent elements in the upper triangle.
    • toString

      public static String toString(double[][] m)
      Copies the given array, using a standard scientific notation number formatter and beginning each line with a tab character. The number format is DecimalFormat(" 0.0000;-0.0000").
    • toString

      public static String toString(double[][] m, List<String> variables)
    • toStringSquare

      public static String toStringSquare(double[][] m, List<String> variables)
    • toStringSquare

      public static String toStringSquare(double[][] m, NumberFormat nf, List<String> variables)
    • toString

      public static String toString(int[] m)
    • toString

      public static String toString(int[][] m, List<String> variables)
    • toStringSquare

      public static String toStringSquare(int[][] m, List<String> variables)
    • toString

      public static String toString(double[] m)
    • toString

      public static String toString(double[] m, NumberFormat nf)
    • toString

      public static String toString(int[][] m)
    • toString

      public static String toString(boolean[][] m)
      Copies the given array, starting each line with a tab character..
    • copyOf

      public static int[] copyOf(int[] arr, int length)
    • copyOf

      public static double[][] copyOf(double[][] arr)
    • transposeWithoutCopy

      public static org.apache.commons.math3.linear.RealMatrix transposeWithoutCopy(org.apache.commons.math3.linear.RealMatrix apacheData)