public class ComplexMatrixMath
extends java.lang.Object
Rows and column numbers of matrices are specified with zero-based indices. All calls expect matrix arguments to be non-null. In addition, all rows of the matrix are expected to have the same number of columns.
Red (ctsay) |
Yellow (ctsay) |
Modifier and Type | Method and Description |
---|---|
protected static void |
_checkSameDimension(java.lang.String caller,
Complex[][] matrix1,
Complex[][] matrix2)
Check that the two matrix arguments are of the same dimension.
|
protected static int |
_checkSquare(java.lang.String caller,
Complex[][] matrix)
Check that the argument matrix is a square matrix.
|
protected static int |
_columns(Complex[][] matrix)
Return the number of columns of a matrix.
|
protected static java.lang.String |
_dimensionString(Complex[][] matrix)
Print out the dimensions of the given matrix.
|
protected static java.lang.Object[] |
_orthogonalizeRows(Complex[][] rowArrays)
Orthogonalize the rows of a matrix.
|
protected static int |
_rows(Complex[][] matrix)
Return the number of rows of a matrix.
|
protected static Complex[][] |
_zeroMatrix(Complex[][] matrix,
int rows,
int columns)
Place zeroes in specific places of the given matrix.
|
static Complex[][] |
add(Complex[][] matrix,
Complex z)
Return a new matrix that is constructed from the argument by
adding the second argument to every element.
|
static Complex[][] |
add(Complex[][] matrix1,
Complex[][] matrix2)
Return a new matrix that is constructed from the argument by
adding the second matrix to the first one.
|
static Complex[][] |
allocCopy(Complex[][] matrix)
Return a new matrix that is a copy of the matrix argument.
|
static Complex[][] |
applyBinaryOperation(ComplexBinaryOperation op,
Complex[][] matrix,
Complex z)
Return a new matrix that is formed by applying an instance of
a ComplexBinaryOperation to each element in the input matrix,
using z as the right argument in all cases and the
matrix elements as the left arguments
(op.operate(matrix[i][j], z)).
|
static Complex[][] |
applyBinaryOperation(ComplexBinaryOperation op,
Complex[][] matrix1,
Complex[][] matrix2)
Return a new matrix that is formed by applying an instance of a
ComplexBinaryOperation to the two matrices, element by element,
using the elements of the first matrix as the left operands and the
elements of the second matrix as the right operands.
|
static Complex[][] |
applyBinaryOperation(ComplexBinaryOperation op,
Complex z,
Complex[][] matrix)
Return a new matrix that is formed by applying an instance of
a ComplexBinaryOperation to each element in the input matrix,
using z as the left argument in all cases and the
matrix elements as the right arguments (z,
op.operate(matrix[i][j])).
|
static Complex[][] |
applyUnaryOperation(ComplexUnaryOperation op,
Complex[][] matrix)
Return a new matrix that is formed by applying an instance of a
ComplexUnaryOperation to each element in the input matrix
(op.operate(matrix[i][j])).
|
static Complex[][] |
conjugate(Complex[][] matrix)
Return a new matrix that is constructed by conjugating the elements
of the input matrix.
|
static Complex[][] |
conjugateTranspose(Complex[][] matrix)
Return a new matrix that is constructed by transposing the input
matrix and conjugating the elements.
|
static Complex[][] |
crop(Complex[][] matrix,
int rowStart,
int colStart,
int rowSpan,
int colSpan)
Return a new matrix that is a sub-matrix of the input
matrix argument.
|
static Complex |
determinant(Complex[][] matrix)
Return the determinant of a square matrix.
|
static Complex[][] |
diag(Complex[] array)
Return a new matrix that is constructed by placing the
elements of the input array on the diagonal of the square
matrix, starting from the top left corner down to the bottom
right corner.
|
static Complex[][] |
divide(Complex[][] matrix,
Complex z)
Return a new matrix that is constructed from the argument by
dividing the second argument to every element.
|
static Complex[][] |
divideElements(Complex[][] matrix1,
Complex[][] matrix2)
Return a new matrix that is constructed by element-by-element
division of the two matrix arguments.
|
static Complex[] |
fromMatrixToArray(Complex[][] matrix)
Return a new array that is filled with the contents of the matrix.
|
static Complex[] |
fromMatrixToArray(Complex[][] matrix,
int maxRow,
int maxCol)
Return a new array that is filled with the contents of the matrix.
|
static Complex[][] |
identity(int dim)
Return an new identity matrix with the specified dimension.
|
static Complex[][] |
identityMatrixComplex(int dim)
Return an new identity matrix with the specified dimension.
|
static double[][] |
imagParts(Complex[][] matrix)
Return a new matrix that is formed by taking the imaginary parts of the
complex numbers in the argument matrix.
|
static Complex[][] |
inverse(Complex[][] A)
Return a new matrix that is constructed by inverting the input
matrix.
|
static void |
matrixCopy(Complex[][] srcMatrix,
Complex[][] destMatrix)
Replace the first matrix argument elements with the values of
the second matrix argument.
|
static void |
matrixCopy(Complex[][] srcMatrix,
int srcRowStart,
int srcColStart,
Complex[][] destMatrix,
int destRowStart,
int destColStart,
int rowSpan,
int colSpan)
Replace the first matrix argument's values, in the specified row
and column range, with the second matrix argument's values, starting
from specified row and column of the second matrix.
|
static Complex[][] |
multiply(Complex[][] matrix,
Complex z)
Return a new matrix that is constructed by multiplying the matrix
by a complex scaleFactor.
|
static Complex[] |
multiply(Complex[][] matrix,
Complex[] array)
Return a new array that is constructed from the argument by
pre-multiplying the array (treated as a row vector) by a matrix.
|
static Complex[][] |
multiply(Complex[][] matrix1,
Complex[][] matrix2)
Return a new matrix that is constructed from the argument by
multiplying the first matrix by the second one.
|
static Complex[][] |
multiply(Complex[][] matrix,
double scaleFactor)
Return a new matrix that is constructed by multiplying the matrix
by a real scaleFactor.
|
static Complex[] |
multiply(Complex[] array,
Complex[][] matrix)
Return a new array that is constructed from the argument by
post-multiplying the matrix by an array (treated as a row vector).
|
static Complex[][] |
multiplyElements(Complex[][] matrix1,
Complex[][] matrix2)
Return a new matrix that is constructed by element by element
multiplication of the two matrix arguments.
|
static Complex[][] |
negative(Complex[][] matrix)
Return a new matrix that is the additive inverse of the
argument matrix.
|
static Complex[][] |
orthogonalizeColumns(Complex[][] matrix)
Return a new matrix that is formed by orthogonalizing the
columns of the input matrix (the column vectors are
orthogonal).
|
static Complex[][] |
orthogonalizeRows(Complex[][] matrix)
Return a new matrix that is formed by orthogonalizing the rows of the
input matrix (the row vectors are orthogonal).
|
static Complex[][] |
orthonormalizeColumns(Complex[][] matrix)
Return a new matrix that is formed by orthonormalizing the
columns of the input matrix (the column vectors are orthogonal
and have norm 1).
|
static Complex[][] |
orthonormalizeRows(Complex[][] matrix)
Return a new matrix that is formed by orthonormalizing the
rows of the input matrix (the row vectors are orthogonal and
have norm 1).
|
static double[][] |
realParts(Complex[][] matrix)
Return a new matrix that is formed by taking the real parts of the
complex numbers in the argument matrix.
|
static Complex[][] |
subtract(Complex[][] matrix1,
Complex[][] matrix2)
Return a new matrix that is constructed from the argument by
subtracting the second matrix from the first one.
|
static Complex |
sum(Complex[][] matrix)
Return the sum of the elements of a matrix.
|
static Complex[][] |
toMatrixFromArray(Complex[] array,
int rows,
int cols)
Return a new matrix of complex numbers that is initialized
from a 1-D array.
|
static java.lang.String |
toString(Complex[][] matrix)
Return a new String representing the matrix, formatted as
in Java array initializers.
|
static java.lang.String |
toString(Complex[][] matrix,
java.lang.String elementDelimiter,
java.lang.String matrixBegin,
java.lang.String matrixEnd,
java.lang.String vectorBegin,
java.lang.String vectorDelimiter,
java.lang.String vectorEnd)
Return a new String representing the matrix, formatted as
specified by the ArrayStringFormat argument.
|
static Complex |
trace(Complex[][] matrix)
Return the trace of a square matrix, which is the sum of the
diagonal entries A11 + A22 + ... + Ann
Throw an IllegalArgumentException if the matrix is not square.
|
static Complex[][] |
transpose(Complex[][] matrix)
Return a new matrix that is constructed by transposing the input
matrix.
|
static boolean |
within(Complex[][] matrix1,
Complex[][] matrix2,
Complex maxError)
Return true if all the distances between corresponding elements in
matrix1 and matrix2 are all less than or equal to
the magnitude of maxError.
|
static boolean |
within(Complex[][] matrix1,
Complex[][] matrix2,
Complex[][] maxError)
Return true if all the distances between corresponding elements in
matrix1 and matrix2 are all less than or equal to
the magnitude of the corresponding element in maxError.
|
static boolean |
within(Complex[][] matrix1,
Complex[][] matrix2,
double maxError)
Return true if all the distances between corresponding
elements in matrix1 and matrix2 are all less
than or equal to the magnitude of maxError.
|
static boolean |
within(Complex[][] matrix1,
Complex[][] matrix2,
double[][] maxError)
Return true if all the distances between corresponding
elements in matrix1 and matrix2 are all less
than or equal to corresponding elements in maxError.
|
static Complex[][] |
zero(int rows,
int columns)
Return a new complex matrix whose entries are all zero.
|
public static final Complex[][] add(Complex[][] matrix, Complex z)
matrix
- A matrix of complex numbers.z
- The complex number to add.public static final Complex[][] add(Complex[][] matrix1, Complex[][] matrix2)
matrix1
- The first matrix of complex numbers.matrix2
- The second matrix of complex numbers.java.lang.IllegalArgumentException
- If the matrices do not have the same
dimensions.public static final Complex[][] allocCopy(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final Complex[][] applyBinaryOperation(ComplexBinaryOperation op, Complex z, Complex[][] matrix)
op
- A complex binary operation.z
- A complex number.matrix
- A matrix of complex numbers.public static final Complex[][] applyBinaryOperation(ComplexBinaryOperation op, Complex[][] matrix, Complex z)
op
- A complex binary operation.z
- A complex number.matrix
- A matrix of complex numbers.public static final Complex[][] applyBinaryOperation(ComplexBinaryOperation op, Complex[][] matrix1, Complex[][] matrix2)
op
- A complex binary operation.matrix1
- The first matrix of complex numbers.matrix2
- The second matrix of complex numbers.java.lang.IllegalArgumentException
- If the matrices do not
have the same dimensions.public static final Complex[][] applyUnaryOperation(ComplexUnaryOperation op, Complex[][] matrix)
op
- A complex unary operation.matrix
- The matrix of complex numbers.public static final Complex[][] conjugate(Complex[][] matrix)
matrix
- The matrix of complex numbers.public static final Complex[][] conjugateTranspose(Complex[][] matrix)
matrix
- The matrix of complex numbers.public static final Complex[][] crop(Complex[][] matrix, int rowStart, int colStart, int rowSpan, int colSpan)
matrix
- A matrix of complex numbers.rowStart
- An int specifying which row to start on.colStart
- An int specifying which column to start on.rowSpan
- An int specifying how many rows to copy.colSpan
- An int specifying how many columns to copy.public static final Complex determinant(Complex[][] matrix)
matrix
- The matrix for which to calculate the determinant.public static final Complex[][] diag(Complex[] array)
array
- The input array of complex numbers.public static final Complex[][] divide(Complex[][] matrix, Complex z)
matrix
- A matrix of complex numbers.z
- The complex number to divide.public static final Complex[][] divideElements(Complex[][] matrix1, Complex[][] matrix2)
matrix1
- The first matrix of complex numbers.matrix2
- The second matrix of complex numbers.java.lang.IllegalArgumentException
- If the matrices do not
have the same dimensions.public static final Complex[] fromMatrixToArray(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final Complex[] fromMatrixToArray(Complex[][] matrix, int maxRow, int maxCol)
matrix
- A matrix of complex numbers.maxRow
- The maximum number of rows.maxCol
- The maximum number of columns.public static final Complex[][] identity(int dim)
dim
- An integer representing the dimension of the
identity matrix to be returned.public static final Complex[][] identityMatrixComplex(int dim)
dim
- An integer representing the dimension of the
identity matrix to be returned.public static final double[][] imagParts(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final Complex[][] inverse(Complex[][] A)
A
- A matrix of complex numbers.public static final void matrixCopy(Complex[][] srcMatrix, Complex[][] destMatrix)
destMatrix
- A matrix of complex numbers, used as the destination.srcMatrix
- A matrix of complex numbers, used as the source.public static final void matrixCopy(Complex[][] srcMatrix, int srcRowStart, int srcColStart, Complex[][] destMatrix, int destRowStart, int destColStart, int rowSpan, int colSpan)
srcMatrix
- A matrix of complex numbers, used as the destination.srcRowStart
- An int specifying the starting row of the source.srcColStart
- An int specifying the starting column of the
source.destMatrix
- A matrix of complex numbers, used as the destination.destRowStart
- An int specifying the starting row of the dest.destColStart
- An int specifying the starting column of the
dest.rowSpan
- An int specifying how many rows to copy.colSpan
- An int specifying how many columns to copy.public static final Complex[][] multiply(Complex[][] matrix, double scaleFactor)
matrix
- A matrix of complex numbers.scaleFactor
- A double used to multiply each element
of the matrix by.public static final Complex[][] multiply(Complex[][] matrix, Complex z)
matrix
- A matrix of complex numbers.z
- A complex number used to multiply each element
of the matrix by.public static final Complex[] multiply(Complex[][] matrix, Complex[] array)
matrix
- A matrix of complex numbers.array
- An array of complex numbers.public static final Complex[] multiply(Complex[] array, Complex[][] matrix)
array
- An array of complex numbers.matrix
- A matrix of complex numbers.public static final Complex[][] multiply(Complex[][] matrix1, Complex[][] matrix2)
Note that this method is different from the other multiply() methods in that this method does not do pointwise multiplication.
matrix1
- The first matrix of complex numbers.matrix2
- The second matrix of complex numbers.multiplyElements(Complex[][], Complex[][])
public static final Complex[][] multiplyElements(Complex[][] matrix1, Complex[][] matrix2)
Note that this method does pointwise matrix multiplication.
See multiply(Complex[][], Complex[][])
for standard
matrix multiplication.
matrix1
- The first matrix of complex numbers.matrix2
- The second matrix of complex numbers.public static final Complex[][] negative(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final Complex[][] orthogonalizeColumns(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final Complex[][] orthogonalizeRows(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final Complex[][] orthonormalizeColumns(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final Complex[][] orthonormalizeRows(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final double[][] realParts(Complex[][] matrix)
matrix
- An matrix of complex numbers.public static final Complex[][] subtract(Complex[][] matrix1, Complex[][] matrix2)
matrix1
- The first matrix of complex numbers.matrix2
- The second matrix of complex numbers.java.lang.IllegalArgumentException
- If the matrices do not
have the same dimensions.public static final Complex sum(Complex[][] matrix)
matrix
- The matrix.public static final Complex[][] toMatrixFromArray(Complex[] array, int rows, int cols)
array
- An array of complex numbers.rows
- An integer representing the number of rows of the
new matrix.cols
- An integer representing the number of columns of the
new matrix.public static final java.lang.String toString(Complex[][] matrix)
matrix
- A matrix of Complex numbers.public static final java.lang.String toString(Complex[][] matrix, java.lang.String elementDelimiter, java.lang.String matrixBegin, java.lang.String matrixEnd, java.lang.String vectorBegin, java.lang.String vectorDelimiter, java.lang.String vectorEnd)
matrix
- A matrix of Complex numbers.elementDelimiter
- The delimiter between elements,
typically ", ".matrixBegin
- The start of the matrix, typically "{".matrixEnd
- The end of the matrix, typically "{".vectorBegin
- The start of the vector, typically "{".vectorDelimiter
- The delimiter between elements,
typically ", ".vectorEnd
- The end of the vector, typically "}".public static final Complex trace(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final Complex[][] transpose(Complex[][] matrix)
matrix
- A matrix of complex numbers.public static final boolean within(Complex[][] matrix1, Complex[][] matrix2, Complex maxError)
matrix1
- The first matrix.matrix2
- The second matrix.maxError
- A complex number whose magnitude is taken to
be the distance threshold.java.lang.IllegalArgumentException
- If the matrices do not have the same
dimensions. This is a run-time exception, so it need not be declared
explicitly.public static final boolean within(Complex[][] matrix1, Complex[][] matrix2, double maxError)
matrix1
- The first matrix.matrix2
- The second matrix.maxError
- The threshold for the magnitude of the difference.java.lang.IllegalArgumentException
- If the matrices do not have the same
dimensions. This is a run-time exception, so it need not be declared explicitly.public static final boolean within(Complex[][] matrix1, Complex[][] matrix2, double[][] maxError)
matrix1
- The first matrix.matrix2
- The second matrix.maxError
- The matrix of thresholds for the magnitudes of
difference.java.lang.IllegalArgumentException
- If the matrices do not have the same
dimensions.public static final boolean within(Complex[][] matrix1, Complex[][] matrix2, Complex[][] maxError)
Note that there is no notion of negative distance with complex numbers, so unlike the within() methods for other types, this method will not return false if an element of the maxError matrix is negative.
matrix1
- The first matrix.matrix2
- The second matrix.maxError
- A matrix of complex numbers whose magnitudes
for each element are taken to be the distance thresholds.java.lang.IllegalArgumentException
- If the arrays are not of the same
length.public static final Complex[][] zero(int rows, int columns)
rows
- The number of rows of the zero matrix.columns
- The number of columns of the zero matrix.protected static final void _checkSameDimension(java.lang.String caller, Complex[][] matrix1, Complex[][] matrix2)
caller
- A string representing the caller method name.matrix1
- A matrix of complex numbers.matrix2
- A matrix of complex numbers.protected static final int _checkSquare(java.lang.String caller, Complex[][] matrix)
caller
- A string representing the caller method name.matrix
- A matrix of complex numbers.protected static final int _columns(Complex[][] matrix)
matrix
- A matrix of complex numbers.protected static final java.lang.String _dimensionString(Complex[][] matrix)
matrix
- A matrix of complex numbers.protected static final java.lang.Object[] _orthogonalizeRows(Complex[][] rowArrays)
rowArrays
- A set of row vectors.protected static final int _rows(Complex[][] matrix)
matrix
- A matrix of complex numbers.protected static final Complex[][] _zeroMatrix(Complex[][] matrix, int rows, int columns)
matrix
- A matrix of complex numbers.rows
- The number of rows for the matrix.columns
- The number of columns for the matrix.