Class MatrixUtils
-
Method Summary
Modifier and TypeMethodDescriptionstatic Array2DRowRealMatrix
static void
checkAdditionCompatible
(AnyMatrix left, AnyMatrix right) Check if matrices are addition compatiblestatic void
checkColumnIndex
(AnyMatrix m, int column) Check if a column index is valid.static void
checkMultiplicationCompatible
(AnyMatrix left, AnyMatrix right) Check if matrices are multiplication compatiblestatic void
checkRowIndex
(AnyMatrix m, int row) Check if a row index is valid.static void
checkSubMatrixIndex
(AnyMatrix m, int[] selectedRows, int[] selectedColumns) Check if submatrix ranges indices are valid.static void
checkSubMatrixIndex
(AnyMatrix m, int startRow, int endRow, int startColumn, int endColumn) Check if submatrix ranges indices are valid.static void
checkSubtractionCompatible
(AnyMatrix left, AnyMatrix right) Check if matrices are subtraction compatiblestatic BigMatrix
createBigIdentityMatrix
(int dimension) Deprecated.static BigMatrix
createBigMatrix
(double[][] data) Deprecated.since 2.0 replaced bycreateFieldMatrix(FieldElement[][])
static BigMatrix
createBigMatrix
(String[][] data) Deprecated.since 2.0 replaced bycreateFieldMatrix(FieldElement[][])
static BigMatrix
createBigMatrix
(BigDecimal[][] data) Deprecated.since 2.0 replaced bycreateFieldMatrix(FieldElement[][])
static BigMatrix
createBigMatrix
(BigDecimal[][] data, boolean copyArray) Deprecated.since 2.0 replaced bycreateFieldMatrix(FieldElement[][])
static BigMatrix
createColumnBigMatrix
(double[] columnData) Deprecated.since 2.0 replaced bycreateColumnFieldMatrix(FieldElement[])
static BigMatrix
createColumnBigMatrix
(String[] columnData) Deprecated.since 2.0 replaced bycreateColumnFieldMatrix(FieldElement[])
static BigMatrix
createColumnBigMatrix
(BigDecimal[] columnData) Deprecated.since 2.0 replaced bycreateColumnFieldMatrix(FieldElement[])
static <T extends FieldElement<T>>
FieldMatrix<T> createColumnFieldMatrix
(T[] columnData) Creates a columnFieldMatrix
using the data from the input array.static RealMatrix
createColumnRealMatrix
(double[] columnData) Creates a columnRealMatrix
using the data from the input array.static <T extends FieldElement<T>>
FieldMatrix<T> createFieldDiagonalMatrix
(T[] diagonal) Returns a diagonal matrix with specified elements.static <T extends FieldElement<T>>
FieldMatrix<T> createFieldIdentityMatrix
(Field<T> field, int dimension) Returnsdimension x dimension
identity matrix.static <T extends FieldElement<T>>
FieldMatrix<T> createFieldMatrix
(Field<T> field, int rows, int columns) Returns aFieldMatrix
with specified dimensions.static <T extends FieldElement<T>>
FieldMatrix<T> createFieldMatrix
(T[][] data) Returns aFieldMatrix
whose entries are the the values in the the input array.static <T extends FieldElement<T>>
FieldVector<T> createFieldVector
(T[] data) Creates aFieldVector
using the data from the input array.static RealMatrix
createRealDiagonalMatrix
(double[] diagonal) Returns a diagonal matrix with specified elements.static RealMatrix
createRealIdentityMatrix
(int dimension) Returnsdimension x dimension
identity matrix.static RealMatrix
createRealMatrix
(double[][] data) Returns aRealMatrix
whose entries are the the values in the the input array.static RealMatrix
createRealMatrix
(int rows, int columns) Returns aRealMatrix
with specified dimensions.static RealVector
createRealVector
(double[] data) Creates aRealVector
using the data from the input array.static BigMatrix
createRowBigMatrix
(double[] rowData) Deprecated.since 2.0 replaced bycreateRowFieldMatrix(FieldElement[])
static BigMatrix
createRowBigMatrix
(String[] rowData) Deprecated.since 2.0 replaced bycreateRowFieldMatrix(FieldElement[])
static BigMatrix
createRowBigMatrix
(BigDecimal[] rowData) Deprecated.since 2.0 replaced bycreateRowFieldMatrix(FieldElement[])
static <T extends FieldElement<T>>
FieldMatrix<T> createRowFieldMatrix
(T[] rowData) Creates a rowFieldMatrix
using the data from the input array.static RealMatrix
createRowRealMatrix
(double[] rowData) Creates a rowRealMatrix
using the data from the input array.static void
deserializeRealMatrix
(Object instance, String fieldName, ObjectInputStream ois) Deserialize aRealMatrix
field in a class.static void
deserializeRealVector
(Object instance, String fieldName, ObjectInputStream ois) Deserialize aRealVector
field in a class.static Array2DRowRealMatrix
static void
serializeRealMatrix
(RealMatrix matrix, ObjectOutputStream oos) Serialize aRealMatrix
.static void
serializeRealVector
(RealVector vector, ObjectOutputStream oos) Serialize aRealVector
.
-
Method Details
-
createRealMatrix
Returns aRealMatrix
with specified dimensions.The type of matrix returned depends on the dimension. Below 212 elements (i.e. 4096 elements or 64×64 for a square matrix) which can be stored in a 32kB array, a
Array2DRowRealMatrix
instance is built. Above this threshold aBlockRealMatrix
instance is built.The matrix elements are all set to 0.0.
- Parameters:
rows
- number of rows of the matrixcolumns
- number of columns of the matrix- Returns:
- RealMatrix with specified dimensions
- See Also:
-
createFieldMatrix
public static <T extends FieldElement<T>> FieldMatrix<T> createFieldMatrix(Field<T> field, int rows, int columns) Returns aFieldMatrix
with specified dimensions.The type of matrix returned depends on the dimension. Below 212 elements (i.e. 4096 elements or 64×64 for a square matrix), a
FieldMatrix
instance is built. Above this threshold aBlockFieldMatrix
instance is built.The matrix elements are all set to field.getZero().
- Type Parameters:
T
- the type of the field elements- Parameters:
field
- field to which the matrix elements belongrows
- number of rows of the matrixcolumns
- number of columns of the matrix- Returns:
- FieldMatrix with specified dimensions
- Since:
- 2.0
- See Also:
-
createRealMatrix
Returns aRealMatrix
whose entries are the the values in the the input array.The type of matrix returned depends on the dimension. Below 212 elements (i.e. 4096 elements or 64×64 for a square matrix) which can be stored in a 32kB array, a
Array2DRowRealMatrix
instance is built. Above this threshold aBlockRealMatrix
instance is built.The input array is copied, not referenced.
- Parameters:
data
- input array- Returns:
- RealMatrix containing the values of the array
- Throws:
IllegalArgumentException
- ifdata
is not rectangular (not all rows have the same length) or emptyNullPointerException
- if eitherdata
ordata[0]
is null- See Also:
-
createFieldMatrix
Returns aFieldMatrix
whose entries are the the values in the the input array.The type of matrix returned depends on the dimension. Below 212 elements (i.e. 4096 elements or 64×64 for a square matrix), a
FieldMatrix
instance is built. Above this threshold aBlockFieldMatrix
instance is built.The input array is copied, not referenced.
- Type Parameters:
T
- the type of the field elements- Parameters:
data
- input array- Returns:
- RealMatrix containing the values of the array
- Throws:
IllegalArgumentException
- ifdata
is not rectangular (not all rows have the same length) or emptyNullPointerException
- if eitherdata
ordata[0]
is null- Since:
- 2.0
- See Also:
-
createRealIdentityMatrix
Returnsdimension x dimension
identity matrix.- Parameters:
dimension
- dimension of identity matrix to generate- Returns:
- identity matrix
- Throws:
IllegalArgumentException
- if dimension is not positive- Since:
- 1.1
-
createFieldIdentityMatrix
public static <T extends FieldElement<T>> FieldMatrix<T> createFieldIdentityMatrix(Field<T> field, int dimension) Returnsdimension x dimension
identity matrix.- Type Parameters:
T
- the type of the field elements- Parameters:
field
- field to which the elements belongdimension
- dimension of identity matrix to generate- Returns:
- identity matrix
- Throws:
IllegalArgumentException
- if dimension is not positive- Since:
- 2.0
-
createBigIdentityMatrix
Deprecated.since 2.0, replaced bycreateFieldIdentityMatrix(Field, int)
Returnsdimension x dimension
identity matrix.- Parameters:
dimension
- dimension of identity matrix to generate- Returns:
- identity matrix
- Throws:
IllegalArgumentException
- if dimension is not positive- Since:
- 1.1
-
createRealDiagonalMatrix
Returns a diagonal matrix with specified elements.- Parameters:
diagonal
- diagonal elements of the matrix (the array elements will be copied)- Returns:
- diagonal matrix
- Since:
- 2.0
-
createFieldDiagonalMatrix
Returns a diagonal matrix with specified elements.- Type Parameters:
T
- the type of the field elements- Parameters:
diagonal
- diagonal elements of the matrix (the array elements will be copied)- Returns:
- diagonal matrix
- Since:
- 2.0
-
createBigMatrix
Deprecated.since 2.0 replaced bycreateFieldMatrix(FieldElement[][])
Returns aBigMatrix
whose entries are the the values in the the input array. The input array is copied, not referenced.- Parameters:
data
- input array- Returns:
- RealMatrix containing the values of the array
- Throws:
IllegalArgumentException
- ifdata
is not rectangular (not all rows have the same length) or emptyNullPointerException
- if data is null
-
createBigMatrix
Deprecated.since 2.0 replaced bycreateFieldMatrix(FieldElement[][])
Returns aBigMatrix
whose entries are the the values in the the input array. The input array is copied, not referenced.- Parameters:
data
- input array- Returns:
- RealMatrix containing the values of the array
- Throws:
IllegalArgumentException
- ifdata
is not rectangular (not all rows have the same length) or emptyNullPointerException
- if data is null
-
createBigMatrix
Deprecated.since 2.0 replaced bycreateFieldMatrix(FieldElement[][])
Returns aBigMatrix
whose entries are the the values in the the input array.If an array is built specially in order to be embedded in a BigMatrix and not used directly, the
copyArray
may be set tofalseinvalid input: '<'/code. This will prevent the copying and improve performance as no new array will be built and no data will be copied.
- Parameters:
data
- data for new matrixcopyArray
- if true, the input array will be copied, otherwise it will be referenced- Returns:
- BigMatrix containing the values of the array
- Throws:
IllegalArgumentException
- ifdata
is not rectangular (not all rows have the same length) or emptyNullPointerException
- ifdata
is null- See Also:
-
createBigMatrix
Deprecated.since 2.0 replaced bycreateFieldMatrix(FieldElement[][])
Returns aBigMatrix
whose entries are the the values in the the input array. The input array is copied, not referenced.- Parameters:
data
- input array- Returns:
- RealMatrix containing the values of the array
- Throws:
IllegalArgumentException
- ifdata
is not rectangular (not all rows have the same length) or emptyNullPointerException
- if data is null
-
createRealVector
Creates aRealVector
using the data from the input array.- Parameters:
data
- the input data- Returns:
- a data.length RealVector
- Throws:
IllegalArgumentException
- ifdata
is emptyNullPointerException
- ifdata
is null
-
createFieldVector
Creates aFieldVector
using the data from the input array.- Type Parameters:
T
- the type of the field elements- Parameters:
data
- the input data- Returns:
- a data.length FieldVector
- Throws:
IllegalArgumentException
- ifdata
is emptyNullPointerException
- ifdata
is null
-
createRowRealMatrix
Creates a rowRealMatrix
using the data from the input array.- Parameters:
rowData
- the input row data- Returns:
- a 1 x rowData.length RealMatrix
- Throws:
IllegalArgumentException
- ifrowData
is emptyNullPointerException
- ifrowData
is null
-
createRowFieldMatrix
Creates a rowFieldMatrix
using the data from the input array.- Type Parameters:
T
- the type of the field elements- Parameters:
rowData
- the input row data- Returns:
- a 1 x rowData.length FieldMatrix
- Throws:
IllegalArgumentException
- ifrowData
is emptyNullPointerException
- ifrowData
is null
-
createRowBigMatrix
Deprecated.since 2.0 replaced bycreateRowFieldMatrix(FieldElement[])
Creates a rowBigMatrix
using the data from the input array.- Parameters:
rowData
- the input row data- Returns:
- a 1 x rowData.length BigMatrix
- Throws:
IllegalArgumentException
- ifrowData
is emptyNullPointerException
- ifrowData
is null
-
createRowBigMatrix
Deprecated.since 2.0 replaced bycreateRowFieldMatrix(FieldElement[])
Creates a rowBigMatrix
using the data from the input array.- Parameters:
rowData
- the input row data- Returns:
- a 1 x rowData.length BigMatrix
- Throws:
IllegalArgumentException
- ifrowData
is emptyNullPointerException
- ifrowData
is null
-
createRowBigMatrix
Deprecated.since 2.0 replaced bycreateRowFieldMatrix(FieldElement[])
Creates a rowBigMatrix
using the data from the input array.- Parameters:
rowData
- the input row data- Returns:
- a 1 x rowData.length BigMatrix
- Throws:
IllegalArgumentException
- ifrowData
is emptyNullPointerException
- ifrowData
is null
-
createColumnRealMatrix
Creates a columnRealMatrix
using the data from the input array.- Parameters:
columnData
- the input column data- Returns:
- a columnData x 1 RealMatrix
- Throws:
IllegalArgumentException
- ifcolumnData
is emptyNullPointerException
- ifcolumnData
is null
-
createColumnFieldMatrix
Creates a columnFieldMatrix
using the data from the input array.- Type Parameters:
T
- the type of the field elements- Parameters:
columnData
- the input column data- Returns:
- a columnData x 1 FieldMatrix
- Throws:
IllegalArgumentException
- ifcolumnData
is emptyNullPointerException
- ifcolumnData
is null
-
createColumnBigMatrix
Deprecated.since 2.0 replaced bycreateColumnFieldMatrix(FieldElement[])
Creates a columnBigMatrix
using the data from the input array.- Parameters:
columnData
- the input column data- Returns:
- a columnData x 1 BigMatrix
- Throws:
IllegalArgumentException
- ifcolumnData
is emptyNullPointerException
- ifcolumnData
is null
-
createColumnBigMatrix
Deprecated.since 2.0 replaced bycreateColumnFieldMatrix(FieldElement[])
Creates a columnBigMatrix
using the data from the input array.- Parameters:
columnData
- the input column data- Returns:
- a columnData x 1 BigMatrix
- Throws:
IllegalArgumentException
- ifcolumnData
is emptyNullPointerException
- ifcolumnData
is null
-
createColumnBigMatrix
Deprecated.since 2.0 replaced bycreateColumnFieldMatrix(FieldElement[])
Creates a columnBigMatrix
using the data from the input array.- Parameters:
columnData
- the input column data- Returns:
- a columnData x 1 BigMatrix
- Throws:
IllegalArgumentException
- ifcolumnData
is emptyNullPointerException
- ifcolumnData
is null
-
checkRowIndex
Check if a row index is valid.- Parameters:
m
- matrix containing the submatrixrow
- row index to check- Throws:
MatrixIndexException
- if index is not valid
-
checkColumnIndex
Check if a column index is valid.- Parameters:
m
- matrix containing the submatrixcolumn
- column index to check- Throws:
MatrixIndexException
- if index is not valid
-
checkSubMatrixIndex
public static void checkSubMatrixIndex(AnyMatrix m, int startRow, int endRow, int startColumn, int endColumn) Check if submatrix ranges indices are valid. Rows and columns are indicated counting from 0 to n-1.- Parameters:
m
- matrix containing the submatrixstartRow
- Initial row indexendRow
- Final row indexstartColumn
- Initial column indexendColumn
- Final column index- Throws:
MatrixIndexException
- if the indices are not valid
-
checkSubMatrixIndex
public static void checkSubMatrixIndex(AnyMatrix m, int[] selectedRows, int[] selectedColumns) throws MatrixIndexException Check if submatrix ranges indices are valid. Rows and columns are indicated counting from 0 to n-1.- Parameters:
m
- matrix containing the submatrixselectedRows
- Array of row indices.selectedColumns
- Array of column indices.- Throws:
MatrixIndexException
- if row or column selections are not valid
-
checkAdditionCompatible
public static void checkAdditionCompatible(AnyMatrix left, AnyMatrix right) throws IllegalArgumentException Check if matrices are addition compatible- Parameters:
left
- left hand side matrixright
- right hand side matrix- Throws:
IllegalArgumentException
- if matrices are not addition compatible
-
checkSubtractionCompatible
public static void checkSubtractionCompatible(AnyMatrix left, AnyMatrix right) throws IllegalArgumentException Check if matrices are subtraction compatible- Parameters:
left
- left hand side matrixright
- right hand side matrix- Throws:
IllegalArgumentException
- if matrices are not subtraction compatible
-
checkMultiplicationCompatible
public static void checkMultiplicationCompatible(AnyMatrix left, AnyMatrix right) throws IllegalArgumentException Check if matrices are multiplication compatible- Parameters:
left
- left hand side matrixright
- right hand side matrix- Throws:
IllegalArgumentException
- if matrices are not multiplication compatible
-
fractionMatrixToRealMatrix
- Parameters:
m
- matrix to convert- Returns:
- converted matrix
-
bigFractionMatrixToRealMatrix
- Parameters:
m
- matrix to convert- Returns:
- converted matrix
-
serializeRealVector
public static void serializeRealVector(RealVector vector, ObjectOutputStream oos) throws IOException Serialize aRealVector
.This method is intended to be called from within a private
writeObject
method (after a call tooos.defaultWriteObject()
) in a class that has aRealVector
field, which should be declaredtransient
. This way, the default handling does not serialize the vector (theRealVector
interface is not serializable by default) but this method does serialize it specifically.The following example shows how a simple class with a name and a real vector should be written:
public class NamedVector implements Serializable { private final String name; private final transient RealVector coefficients; // omitted constructors, getters ... private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); // takes care of name field MatrixUtils.serializeRealVector(coefficients, oos); } private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); // takes care of name field MatrixUtils.deserializeRealVector(this, "coefficients", ois); } }
- Parameters:
vector
- real vector to serializeoos
- stream where the real vector should be written- Throws:
IOException
- if object cannot be written to stream- See Also:
-
deserializeRealVector
public static void deserializeRealVector(Object instance, String fieldName, ObjectInputStream ois) throws ClassNotFoundException, IOException Deserialize aRealVector
field in a class.This method is intended to be called from within a private
readObject
method (after a call toois.defaultReadObject()
) in a class that has aRealVector
field, which should be declaredtransient
. This way, the default handling does not deserialize the vector (theRealVector
interface is not serializable by default) but this method does deserialize it specifically.- Parameters:
instance
- instance in which the field must be set upfieldName
- name of the field within the class (may be private and final)ois
- stream from which the real vector should be read- Throws:
ClassNotFoundException
- if a class in the stream cannot be foundIOException
- if object cannot be read from the stream- See Also:
-
serializeRealMatrix
public static void serializeRealMatrix(RealMatrix matrix, ObjectOutputStream oos) throws IOException Serialize aRealMatrix
.This method is intended to be called from within a private
writeObject
method (after a call tooos.defaultWriteObject()
) in a class that has aRealMatrix
field, which should be declaredtransient
. This way, the default handling does not serialize the matrix (theRealMatrix
interface is not serializable by default) but this method does serialize it specifically.The following example shows how a simple class with a name and a real matrix should be written:
public class NamedMatrix implements Serializable { private final String name; private final transient RealMatrix coefficients; // omitted constructors, getters ... private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); // takes care of name field MatrixUtils.serializeRealMatrix(coefficients, oos); } private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); // takes care of name field MatrixUtils.deserializeRealMatrix(this, "coefficients", ois); } }
- Parameters:
matrix
- real matrix to serializeoos
- stream where the real matrix should be written- Throws:
IOException
- if object cannot be written to stream- See Also:
-
deserializeRealMatrix
public static void deserializeRealMatrix(Object instance, String fieldName, ObjectInputStream ois) throws ClassNotFoundException, IOException Deserialize aRealMatrix
field in a class.This method is intended to be called from within a private
readObject
method (after a call toois.defaultReadObject()
) in a class that has aRealMatrix
field, which should be declaredtransient
. This way, the default handling does not deserialize the matrix (theRealMatrix
interface is not serializable by default) but this method does deserialize it specifically.- Parameters:
instance
- instance in which the field must be set upfieldName
- name of the field within the class (may be private and final)ois
- stream from which the real matrix should be read- Throws:
ClassNotFoundException
- if a class in the stream cannot be foundIOException
- if object cannot be read from the stream- See Also:
-
createFieldIdentityMatrix(Field, int)