Package edu.cmu.tetrad.util
Class MatrixUtils
java.lang.Object
edu.cmu.tetrad.util.MatrixUtils
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.
- Version:
- $Id: $Id
- Author:
- Tianjiao Chu, josephramsey, Kevin V. Bui
-
Method Summary
Modifier and TypeMethodDescriptionstatic double[][]
asRow
(double[] v) asRow.static Matrix
cholesky.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[][]
convertLowerTriangleToSymmetric
(double[][] arr) Converts a matrix in lower triangular form to a symmetric matrix in square form.static double[][]
copyOf
(double[][] arr) copyOf.static int[]
copyOf
(int[] arr, int length) copyOf.static double
determinant
(double[][] m) determinant.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) hasDimensions.static org.ejml.simple.SimpleMatrix
identity
(int size) identity.static Matrix
impliedCovar
(Matrix edgeCoef, Matrix errCovar) static double
innerProduct
(double[] ma, double[] mb) innerProduct.static double[][]
inverse
(double[][] m) Calculates the inverse of a given matrix.static double[][]
invVech
(double[] vech) invVech.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.static boolean
isSquare
(double[][] m) isSquare.static boolean
isSymmetric
(double[][] m, double tolerance) isSymmetric.static double[][]
outerProduct
(double[] ma, double[] mb) outerProduct.static double[]
product
(double[][] ma, double[] mb) product.static double[][]
product
(double[][] ma, double[][] mb) product.static double[]
product
(double[] ma, double[][] mb) product.static Vector
product.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) scalarProduct.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 removedstatic double[][]
subtract
(double[][] ma, double[][] mb) subtract.static double[]
subtract
(double[] ma, double[] mb) subtract.static double[][]
sum
(double[][] ma, double[][] mb) sum.static double[]
sum
(double[] ma, double[] mb) sum.static int
sum0ToN
(int n) sum0ToN.static String
toString
(boolean[][] m) Copies the given array, starting each line with a tab character..static String
toString
(double[] m) toString.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.static String
toString
(double[] m, NumberFormat nf) toString.static String
toString
(int[] m) toString.static String
toString
(int[][] m) toString.static String
toString.static String
toStringSquare
(double[][] m, NumberFormat nf, List<String> variables) toStringSquare.static String
toStringSquare
(double[][] m, List<String> variables) toStringSquare.static String
toStringSquare
(int[][] m, List<String> variables) toStringSquare.static double
trace
(double[][] m) trace.static double[][]
transpose
(double[][] m) transpose.static org.apache.commons.math3.linear.RealMatrix
transposeWithoutCopy
(org.apache.commons.math3.linear.RealMatrix apacheData) transposeWithoutCopy.static double[][]
vec
(double[][] m) vec.static double[][]
vech
(double[][] m) vech.static double[][]
vechToVecLeft
(int n) The matrix which, when postmultiplied by vech, return vec.static double[][]
zeros
(int rows, int cols) zeros.
-
Method Details
-
repmat
public static double[][] repmat(double[][] mat, int nRow, int mColumn) Make a repeat copy of matrix mat.- Parameters:
mat
- matrix to copynRow
- number of repeat copy of rowmColumn
- number of repeat copy of column- Returns:
- an array of objects
-
repmat
public static double[][] repmat(double[][] mat, int n) Make a n repeat copy of the rows and columns of the matrix mat.- Parameters:
mat
- an array of objectsn
- number of repeat copy- Returns:
- an array of objects
-
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) isSquare.
- Parameters:
m
- A 2D double matrix.- Returns:
- Ibid.
-
isSymmetric
public static boolean isSymmetric(double[][] m, double tolerance) isSymmetric.
- Parameters:
m
- The matrix to check.tolerance
- A double >= 0.- Returns:
- Ibid.
-
determinant
public static double determinant(double[][] m) determinant.
- 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- Parameters:
m
- an array of objectsrem
- a int- Returns:
- an array of objects
-
inverse
public static double[][] inverse(double[][] m) Calculates the inverse of a given matrix.- Parameters:
m
- the input matrix to calculate the inverse of- Returns:
- the inverse of the input matrix as a 2D array of doubles
-
product
public static double[][] product(double[][] ma, double[][] mb) product.
- Parameters:
ma
- an array of objectsmb
- an array of objects- 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.
- Parameters:
ma
- an array of objectsmb
- an array of objects- Returns:
- an array of objects
-
product
-
product
public static double[] product(double[][] ma, double[] mb) product.
- Parameters:
ma
- an array of objectsmb
- an array of objects- Returns:
- an array of objects
-
outerProduct
public static double[][] outerProduct(double[] ma, double[] mb) outerProduct.
- Parameters:
ma
- an array of objectsmb
- an array of objects- Returns:
- an array of objects
-
innerProduct
public static double innerProduct(double[] ma, double[] mb) innerProduct.
- Parameters:
ma
- an array of objectsmb
- an array of objects- Returns:
- a double
-
transpose
public static double[][] transpose(double[][] m) transpose.
- Parameters:
m
- an array of objects- Returns:
- the transpose of the given matrix.
-
trace
public static double trace(double[][] m) trace.
- Parameters:
m
- an array of objects- Returns:
- the trace of the given (square) m.
-
identity
public static org.ejml.simple.SimpleMatrix identity(int size) identity.
- Parameters:
size
- a int- Returns:
- the identity matrix of the given order.
-
sum
public static double[][] sum(double[][] ma, double[][] mb) sum.
- Parameters:
ma
- an array of objectsmb
- an array of objects- Returns:
- the sum of ma and mb.
-
sum
public static double[] sum(double[] ma, double[] mb) sum.
- Parameters:
ma
- an array of objectsmb
- an array of objects- Returns:
- an array of objects
-
subtract
public static double[][] subtract(double[][] ma, double[][] mb) subtract.
- Parameters:
ma
- an array of objectsmb
- an array of objects- Returns:
- an array of objects
-
subtract
public static double[] subtract(double[] ma, double[] mb) subtract.
- Parameters:
ma
- an array of objectsmb
- an array of objects- Returns:
- an array of objects
-
directProduct
public static double[][] directProduct(double[][] ma, double[][] mb) Computes the direct (Kronecker) outerProduct.- Parameters:
ma
- an array of objectsmb
- an array of objects- Returns:
- an array of objects
-
scalarProduct
public static double[][] scalarProduct(double scalar, double[][] m) Multiplies the given matrix through by the given scalar.- Parameters:
scalar
- a doublem
- an array of objects- Returns:
- an array of objects
-
scalarProduct
public static double[] scalarProduct(double scalar, double[] m) scalarProduct.
- Parameters:
scalar
- a doublem
- an array of objects- Returns:
- an array of objects
-
concatenate
public static double[] concatenate(double[][] vectors) Concatenates the vectors rows[i], i = 0...rows.length, into a single vector.- Parameters:
vectors
- an array of objects- Returns:
- an array of objects
-
asRow
public static double[][] asRow(double[] v) asRow.
- Parameters:
v
- an array of objects- Returns:
- the vector as a 1 x n row matrix.
-
impliedCovar
-
vech
public static double[][] vech(double[][] m) vech.
- Parameters:
m
- an array of objects- 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) invVech.
- Parameters:
vech
- an array of objects- Returns:
- the symmetric matrix for which the given array is the vech.
-
vec
public static double[][] vec(double[][] m) vec.
- Parameters:
m
- an array of objects- 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) sum0ToN.
- Parameters:
n
- a int- 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.- Returns:
- an array of objects
-
hasDimensions
public static boolean hasDimensions(double[][] m, int i, int j) hasDimensions.
- Parameters:
m
- an array of objectsi
- a intj
- a int- 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) zeros.
- Parameters:
rows
- a intcols
- a int- Returns:
- an array of objects
-
isPositiveDefinite
-
cholesky
-
convertCovToCorr
-
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.- Parameters:
arr
- an array of objects- Returns:
- an array of objects
-
toString
-
toString
-
toStringSquare
-
toStringSquare
toStringSquare.
- Parameters:
m
- an array of objectsnf
- aNumberFormat
objectvariables
- aList
object- Returns:
- a
String
object
-
toString
-
toString
-
toStringSquare
-
toString
-
toString
toString.
- Parameters:
m
- an array of objectsnf
- aNumberFormat
object- Returns:
- a
String
object
-
toString
-
toString
-
copyOf
public static int[] copyOf(int[] arr, int length) copyOf.
- Parameters:
arr
- an array of objectslength
- a int- Returns:
- an array of objects
-
copyOf
public static double[][] copyOf(double[][] arr) copyOf.
- Parameters:
arr
- an array of objects- Returns:
- an array of objects
-
transposeWithoutCopy
public static org.apache.commons.math3.linear.RealMatrix transposeWithoutCopy(org.apache.commons.math3.linear.RealMatrix apacheData) transposeWithoutCopy.
- Parameters:
apacheData
- aRealMatrix
object- Returns:
- a
RealMatrix
object
-