public class MatrixInt extends Object implements Serializable, com.helger.commons.lang.ICloneable<MatrixInt>
The Java Matrix Class provides the fundamental operations of numerical linear algebra. Various constructors create Matrices from two dimensional arrays of double precision floating point numbers. Various "gets" and "sets" provide access to submatrices and matrix elements. Several methods implement basic matrix arithmetic, including matrix addition and multiplication, matrix norms, and element-by-element array operations. Methods for reading and printing matrices are also included. All the operations in this version of the Matrix Class involve real matrices. Complex matrices may be handled in a future version.
Five fundamental matrix decompositions, which consist of pairs or triples of matrices, permutation vectors, and the like, produce results in five decomposition classes. These decompositions are accessed by the Matrix class to compute solutions of simultaneous linear equations, determinants, inverses and other matrix functions. The five decompositions are:
double [] [] vals = { { 1., 2., 3 }, { 4., 5., 6. }, { 7., 8., 10. } };
Matrix A = new Matrix (vals);
Matrix b = Matrix.random (3, 1);
Matrix x = A.solve (b);
Matrix r = A.times (x).minus (b);
double rnorm = r.normInf ();
| Constructor and Description |
|---|
MatrixInt(int[] aVals,
int nRows)
Construct a matrix from a one-dimensional packed array
|
MatrixInt(int nRows,
int nCols)
Construct an nRows-by-nCols matrix of zeros.
|
MatrixInt(int nRows,
int nCols,
int nValue)
Construct an nRows-by-nCols constant matrix.
|
| Modifier and Type | Method and Description |
|---|---|
MatrixInt |
arrayLeftDivide(MatrixInt aMatrix)
Element-by-element left division, C = B.
|
MatrixInt |
arrayLeftDivideEquals(MatrixInt aMatrix)
Element-by-element left division in place, A = B.
|
MatrixInt |
arrayRightDivide(MatrixInt aMatrix)
Element-by-element right division, C = A.
|
MatrixInt |
arrayRightDivideEquals(MatrixInt aMatrix)
Element-by-element right division in place, A = A.
|
MatrixInt |
arrayTimes(MatrixInt aMatrix)
Element-by-element multiplication, C = A.
|
MatrixInt |
arrayTimesEquals(MatrixInt aMatrix)
Element-by-element multiplication in place, A = A.
|
static MatrixInt |
constructWithCopy(int[][] aArray)
Construct a matrix from a copy of a 2-D array.
|
boolean |
equals(Object o) |
int |
get(int nRow,
int nCol)
Get a single element.
|
int[][] |
getArrayCopy()
Copy the internal two-dimensional array.
|
MatrixInt |
getClone() |
int |
getColumnDimension()
Get column dimension.
|
int[] |
getColumnPackedCopy()
Make a one-dimensional column packed copy of the internal array.
|
MatrixInt |
getMatrix(int[] aRows,
int[] aCols)
Get a submatrix.
|
MatrixInt |
getMatrix(int[] aRows,
int nStartColumnIndex,
int nEndColumnIndex)
Get a submatrix.
|
MatrixInt |
getMatrix(int nStartRowIndex,
int nEndRowIndex,
int[] aCols)
Get a submatrix.
|
MatrixInt |
getMatrix(int nStartRowIndex,
int nEndRowIndex,
int nStartColumnIndex,
int nEndColumnIndex)
Get a submatrix.
|
int |
getRowDimension()
Get row dimension.
|
int[] |
getRowPackedCopy()
Make a one-dimensional row packed copy of the internal array.
|
int |
hashCode() |
static MatrixInt |
identity(int nRows,
int nCols)
Generate identity matrix
|
int[][] |
internalGetArray()
Access the internal two-dimensional array.
|
boolean |
isSymmetrical() |
MatrixInt |
minus(MatrixInt aMatrix)
C = A - B
|
MatrixInt |
minusEquals(MatrixInt aMatrix)
A = A - B
|
int |
norm1()
One norm
|
double |
normF()
Frobenius norm
|
int |
normInf()
Infinity norm
|
MatrixInt |
plus(MatrixInt aMatrix)
C = A + B
|
MatrixInt |
plusEquals(MatrixInt aMatrix)
A = A + B
|
void |
print(PrintWriter aPW,
int nWidth,
int nFractionDigits)
Print the matrix to the output stream.
|
void |
print(PrintWriter aPW,
NumberFormat aFormat,
int nWidth)
Print the matrix to the output stream.
|
static MatrixInt |
random(int nRows,
int nCols)
Generate matrix with random elements
|
static MatrixInt |
read(Reader aReader)
Read a matrix from a stream.
|
void |
set(int nRow,
int nCol,
int nValue)
Set a single element.
|
void |
setMatrix(int[] aRows,
int[] aCols,
MatrixInt aMatrix)
Set a submatrix.
|
void |
setMatrix(int[] aRows,
int nStartColumnIndex,
int nEndColumnIndex,
MatrixInt aMatrix)
Set a submatrix.
|
void |
setMatrix(int nStartRowIndex,
int nEndRowIndex,
int[] aCols,
MatrixInt aMatrix)
Set a submatrix.
|
void |
setMatrix(int nStartRowIndex,
int nEndRowIndex,
int nStartColumnIndex,
int nEndColumnIndex,
MatrixInt aMatrix)
Set a submatrix.
|
MatrixInt |
times(int s)
Multiply a matrix by a scalar, C = s*A
|
MatrixInt |
times(MatrixInt aMatrix)
Linear algebraic matrix multiplication, A * B
|
MatrixInt |
timesEquals(double s)
Multiply a matrix by a scalar in place, A = s*A
|
int |
trace()
Matrix trace.
|
MatrixInt |
transpose()
Matrix transpose.
|
MatrixInt |
uminus()
Unary minus
|
public MatrixInt(@Nonnegative int nRows, @Nonnegative int nCols)
nRows - Number of rows.nCols - Number of columns.public MatrixInt(@Nonnegative int nRows, @Nonnegative int nCols, int nValue)
nRows - Number of rows.nCols - Number of columns.nValue - Fill the matrix with this scalar value.public MatrixInt(@Nonnull int[] aVals, @Nonnegative int nRows)
aVals - One-dimensional array of doubles, packed by columns (ala Fortran).nRows - Number of rows.IllegalArgumentException - Array length must be a multiple of nRows.@Nonnull public static MatrixInt constructWithCopy(@Nonnull int[][] aArray)
aArray - Two-dimensional array of doubles.IllegalArgumentException - All rows must have the same length@Nonnull @ReturnsMutableCopy public MatrixInt getClone()
getClone in interface com.helger.commons.lang.ICloneable<MatrixInt>@Nonnull public int[][] internalGetArray()
@Nonnull @ReturnsMutableCopy public int[][] getArrayCopy()
@Nonnull public int[] getColumnPackedCopy()
@Nonnull public int[] getRowPackedCopy()
@Nonnegative public int getRowDimension()
@Nonnegative public int getColumnDimension()
public boolean isSymmetrical()
true if the matrix is symmetrical, meaning number of
rows and columns is identical.public int get(@Nonnegative int nRow, @Nonnegative int nCol)
nRow - Row index.nCol - Column index.@Nonnull @ReturnsMutableCopy public MatrixInt getMatrix(@Nonnegative int nStartRowIndex, @Nonnegative int nEndRowIndex, @Nonnegative int nStartColumnIndex, @Nonnegative int nEndColumnIndex)
nStartRowIndex - Initial row indexnEndRowIndex - Final row indexnStartColumnIndex - Initial column indexnEndColumnIndex - Final column indexArrayIndexOutOfBoundsException - Submatrix indices@Nonnull @ReturnsMutableCopy public MatrixInt getMatrix(@Nonnull int[] aRows, @Nonnull int[] aCols)
aRows - Array of row indices.aCols - Array of column indices.ArrayIndexOutOfBoundsException - Submatrix indices@Nonnull @ReturnsMutableCopy public MatrixInt getMatrix(@Nonnegative int nStartRowIndex, @Nonnegative int nEndRowIndex, @Nonnull int[] aCols)
nStartRowIndex - Initial row indexnEndRowIndex - Final row indexaCols - Array of column indices.ArrayIndexOutOfBoundsException - Submatrix indices@Nonnull @ReturnsMutableCopy public MatrixInt getMatrix(@Nonnull int[] aRows, @Nonnegative int nStartColumnIndex, @Nonnegative int nEndColumnIndex)
aRows - Array of row indices.nStartColumnIndex - Initial column indexnEndColumnIndex - Final column indexArrayIndexOutOfBoundsException - Submatrix indicespublic void set(@Nonnegative int nRow, @Nonnegative int nCol, int nValue)
nRow - Row index.nCol - Column index.nValue - A(nRow,nCol).public void setMatrix(@Nonnegative int nStartRowIndex, @Nonnegative int nEndRowIndex, @Nonnegative int nStartColumnIndex, @Nonnegative int nEndColumnIndex, @Nonnull MatrixInt aMatrix)
nStartRowIndex - Initial row indexnEndRowIndex - Final row indexnStartColumnIndex - Initial column indexnEndColumnIndex - Final column indexaMatrix - Matrix(nStartRowIndex:nEndRowIndex,nStartColumnIndex:nEndColumnIndex
)ArrayIndexOutOfBoundsException - Submatrix indicespublic void setMatrix(@Nonnull int[] aRows, @Nonnull int[] aCols, @Nonnull MatrixInt aMatrix)
aRows - Array of row indices.aCols - Array of column indices.aMatrix - Matrix(aRows(:),aCols(:))ArrayIndexOutOfBoundsException - Submatrix indicespublic void setMatrix(@Nonnull int[] aRows, @Nonnegative int nStartColumnIndex, @Nonnegative int nEndColumnIndex, @Nonnull MatrixInt aMatrix)
aRows - Array of row indices.nStartColumnIndex - Initial column indexnEndColumnIndex - Final column indexaMatrix - Matrix(aRows(:),nStartColumnIndex:nEndColumnIndexArrayIndexOutOfBoundsException - Submatrix indicespublic void setMatrix(@Nonnegative int nStartRowIndex, @Nonnegative int nEndRowIndex, @Nonnull int[] aCols, @Nonnull MatrixInt aMatrix)
nStartRowIndex - Initial row indexnEndRowIndex - Final row indexaCols - Array of column indices.aMatrix - Matrix(nStartRowIndex:nEndRowIndex,aCols(:))ArrayIndexOutOfBoundsException - Submatrix indices@Nonnull @ReturnsMutableCopy @CheckReturnValue public MatrixInt transpose()
public int norm1()
public int normInf()
public double normF()
@Nonnull @ReturnsMutableCopy public MatrixInt plus(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull public MatrixInt plusEquals(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull @ReturnsMutableCopy public MatrixInt minus(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull public MatrixInt minusEquals(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull @ReturnsMutableCopy public MatrixInt arrayTimes(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull public MatrixInt arrayTimesEquals(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull @ReturnsMutableCopy public MatrixInt arrayRightDivide(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull public MatrixInt arrayRightDivideEquals(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull @ReturnsMutableCopy public MatrixInt arrayLeftDivide(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull public MatrixInt arrayLeftDivideEquals(@Nonnull MatrixInt aMatrix)
aMatrix - another matrix@Nonnull @ReturnsMutableCopy public MatrixInt times(int s)
s - scalar@Nonnull public MatrixInt timesEquals(double s)
s - scalar@Nonnull @ReturnsMutableCopy public MatrixInt times(@Nonnull MatrixInt aMatrix)
aMatrix - another matrixIllegalArgumentException - Matrix inner dimensions must agree.public int trace()
@Nonnull @ReturnsMutableCopy public static MatrixInt random(@Nonnegative int nRows, @Nonnegative int nCols)
nRows - Number of rows.nCols - Number of columns.@Nonnull @ReturnsMutableCopy public static MatrixInt identity(@Nonnegative int nRows, @Nonnegative int nCols)
nRows - Number of rows.nCols - Number of columns.public void print(@Nonnull PrintWriter aPW, @Nonnegative int nWidth, @Nonnegative int nFractionDigits)
aPW - Output stream.nWidth - Column width.nFractionDigits - Number of digits after the decimal.public void print(@Nonnull PrintWriter aPW, @Nonnull NumberFormat aFormat, @Nonnegative int nWidth)
aPW - the output stream.aFormat - A formatting object to format the matrix elementsnWidth - Column width.DecimalFormat.setDecimalFormatSymbols(java.text.DecimalFormatSymbols)@Nonnull public static MatrixInt read(@Nonnull @WillNotClose Reader aReader) throws IOException
aReader - the input stream.IOException - in case of an I/O errorCopyright © 2014–2021 Philip Helger. All rights reserved.