Package org.djunits.vecmat.dn
Class AbsMatrixNxN<A extends AbsQuantity<A,Q,?>,Q extends Quantity<Q>>
java.lang.Object
org.djunits.vecmat.def.AbsVectorMatrix<A,Q,MA,MQ,MAT>
org.djunits.vecmat.def.AbsTable<A,Q,MA,MQ,MAT>
org.djunits.vecmat.def.AbsMatrix<A,Q,MA,MQ,MA>
org.djunits.vecmat.def.AbsSquareMatrix<A,Q,AbsMatrixNxN<A,Q>,MatrixNxN<Q>>
org.djunits.vecmat.dn.AbsMatrixNxN<A,Q>
- Type Parameters:
A- the absolute quantity typeQ- the corresponding relative quantity type
- All Implemented Interfaces:
Serializable,Value<AbsMatrixNxN<A,Q>, Q>
public class AbsMatrixNxN<A extends AbsQuantity<A,Q,?>,Q extends Quantity<Q>>
extends AbsSquareMatrix<A,Q,AbsMatrixNxN<A,Q>,MatrixNxN<Q>>
AbsMatrixNxN implements a matrix with NxN absolute quantities with a reference point. The matrix is immutable, except for the
display unit, which can be changed.
Copyright (c) 2026-2026 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See for project information https://djunits.org. The DJUNITS project is distributed under a three-clause BSD-style license.
- Author:
- Alexander Verbraeck
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetColumnVector(int col) Return a quantity column (0-based) from the vector or matrix.Retrieve the main diagonal of the matrix as a column vector.getRowVector(int row) Return a quantity row (0-based) from the vector or matrix.Return a new vector or matrix with the given SI or BASE values for the relative vector or matrix.mgetColumnVector(int mCol) Return a quantity column (1-based) from the vector or matrix.mgetRowVector(int mRow) Return a quantity row (1-based) from the vector or matrix.static <A extends AbsQuantity<A,Q, R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>>
AbsMatrixNxN<A,Q> Create an AbsMatrixNxN with a unit, based on a 2-dimensional grid.static <A extends AbsQuantity<A,Q, R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>>
AbsMatrixNxN<A,Q> Create an AbsMatrixNxN without needing generics.static <A extends AbsQuantity<A,Q, R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>>
AbsMatrixNxN<A,Q> of(A[] absData) Create a AbsMatrixNxN without needing generics, based on a row-major array of absolute quantities.static <A extends AbsQuantity<A,Q, R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>>
AbsMatrixNxN<A,Q> of(A[][] absGrid) Create a AbsMatrixNxN without needing generics, based on a row-major array of absolute quantities.static <A extends AbsQuantity<A,Q, R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>>
AbsMatrixNxN<A,Q> Create an AbsMatrixNxN without needing generics.static <A extends AbsQuantity<A,Q, R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>>
AbsMatrixNxN<A,Q> of(Q[][] grid, R reference) Create an AbsMatrixNxN without needing generics.static <A extends AbsQuantity<A,Q, R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>>
AbsMatrixNxN<A,Q> of(Q[] data, R reference) Create an AbsMatrixNxN without needing generics.static <A extends AbsQuantity<A,Q, R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>>
AbsMatrixNxN<A,Q> Create an AbsMatrixNxN with a unit, based on a 2-dimensional grid with SI-values.static <A extends AbsQuantity<A,Q, R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>>
AbsMatrixNxN<A,Q> Create an AbsMatrixNxN without needing generics.Methods inherited from class org.djunits.vecmat.def.AbsSquareMatrix
getDiagonalScalars, getDiagonalSi, isSkewSymmetric, isSkewSymmetric, isSymmetric, isSymmetric, order, transposeMethods inherited from class org.djunits.vecmat.def.AbsTable
get, getColumnScalars, getColumnSi, getRowScalars, getRowSi, getScalarArray, getScalarGrid, getSiArray, getSiGrid, mget, mgetColumnScalars, mgetColumnSi, mgetRowScalars, mgetRowSi, msi, siMethods inherited from class org.djunits.vecmat.def.AbsVectorMatrix
add, add, asAbsMatrix1x1, asAbsMatrix2x2, asAbsMatrix3x3, asAbsMatrixNxM, asAbsMatrixNxN, asAbsQuantityTable, asAbsVector1, asAbsVector2Col, asAbsVector2Row, asAbsVector3Col, asAbsVector3Row, asAbsVectorNCol, asAbsVectorNRow, checkCol, checkRow, cols, equals, getDisplayUnit, getReference, getRelativeVecMat, hashCode, instantiateSi, isRelative, max, mcheckCol, mcheckRow, median, min, rows, setDisplayUnit, subtract, subtract, subtract, subtract, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.djunits.value.Value
isAbsolute, setDisplayUnit
-
Constructor Details
-
AbsMatrixNxN
Create a new AbsMatrixNxN with a display unit and a reference point.- Parameters:
relativeMatrix- the matrix values {a_ij} expressed in the displayUnitreference- the reference point for the absolute values
-
-
Method Details
-
instantiate
Description copied from class:AbsVectorMatrixReturn a new vector or matrix with the given SI or BASE values for the relative vector or matrix.- Specified by:
instantiatein classAbsVectorMatrix<A extends AbsQuantity<A,Q, ?>, Q extends Quantity<Q>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>, MatrixNxN<Q extends Quantity<Q>>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>> - Parameters:
relativeMatrix- the underlying relative vector or matrix with SI values relative to the reference pointreference- the reference point for the relative SI values- Returns:
- a new matrix with the provided SI or BASE values
-
getRowVector
Description copied from class:AbsTableReturn a quantity row (0-based) from the vector or matrix. Note that the specific vector to return can be tightened by the implementing class.- Specified by:
getRowVectorin classAbsTable<A extends AbsQuantity<A,Q, ?>, Q extends Quantity<Q>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>, MatrixNxN<Q extends Quantity<Q>>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>> - Parameters:
row- the row number to retrieve (0-based)- Returns:
- a row vector with the data at the given row
-
mgetRowVector
Description copied from class:AbsTableReturn a quantity row (1-based) from the vector or matrix. Note that the specific vector to return can be tightened by the implementing class.- Specified by:
mgetRowVectorin classAbsTable<A extends AbsQuantity<A,Q, ?>, Q extends Quantity<Q>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>, MatrixNxN<Q extends Quantity<Q>>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>> - Parameters:
mRow- the row number to retrieve (1-based)- Returns:
- a row vector with the data at the given row
-
getColumnVector
Description copied from class:AbsTableReturn a quantity column (0-based) from the vector or matrix. Note that the specific vector to return can be tightened by the implementing class.- Specified by:
getColumnVectorin classAbsTable<A extends AbsQuantity<A,Q, ?>, Q extends Quantity<Q>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>, MatrixNxN<Q extends Quantity<Q>>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>> - Parameters:
col- the column number to retrieve (0-based)- Returns:
- a column vector with the data at the given column
-
mgetColumnVector
Description copied from class:AbsTableReturn a quantity column (1-based) from the vector or matrix. Note that the specific vector to return can be tightened by the implementing class.- Specified by:
mgetColumnVectorin classAbsTable<A extends AbsQuantity<A,Q, ?>, Q extends Quantity<Q>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>, MatrixNxN<Q extends Quantity<Q>>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>> - Parameters:
mCol- the column number to retrieve (1-based)- Returns:
- a column vector with the data at the given column
-
getDiagonalVector
Description copied from class:AbsSquareMatrixRetrieve the main diagonal of the matrix as a column vector.- Specified by:
getDiagonalVectorin classAbsSquareMatrix<A extends AbsQuantity<A,Q, ?>, Q extends Quantity<Q>, AbsMatrixNxN<A extends AbsQuantity<A, Q, ?>, Q extends Quantity<Q>>, MatrixNxN<Q extends Quantity<Q>>> - Returns:
- the main diagonal as a Vector
-
of
public static <A extends AbsQuantity<A,Q, AbsMatrixNxN<A,R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>> Q> of(double[] dataInUnit, Unit<?, Q> unit, R reference) Create an AbsMatrixNxN without needing generics.- Type Parameters:
A- the absolute quantity typeQ- the quantity typeR- the reference type- Parameters:
dataInUnit- the matrix values {a11, a12, 13, ..., aN1, aN2, ..., aNN} expressed as an array in the display unitunit- the unit of the data, which will also be used as the display unitreference- the reference point for the absolute quantities- Returns:
- a new AbsMatrixNxN with a unit
- Throws:
IllegalArgumentException- when the size of the data object is not a square
-
ofSi
public static <A extends AbsQuantity<A,Q, AbsMatrixNxN<A,R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>> Q> ofSi(double[] dataSi, Unit<?, Q> displayUnit, R reference) Create an AbsMatrixNxN without needing generics.- Type Parameters:
A- the absolute quantity typeQ- the quantity typeR- the reference type- Parameters:
dataSi- the matrix values {a11, a12, 13, ..., aN1, aN2, ..., aNN} expressed as an array in the SI unitsdisplayUnit- the display unit to usereference- the reference point for the absolute quantities- Returns:
- a new AbsMatrixNxN with a unit
- Throws:
IllegalArgumentException- when the size of the data object is not a square
-
of
public static <A extends AbsQuantity<A,Q, AbsMatrixNxN<A,R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>> Q> of(Q[] data, R reference) Create an AbsMatrixNxN without needing generics.- Type Parameters:
A- the absolute quantity typeQ- the quantity typeR- the reference type- Parameters:
data- the matrix values {a11, a12, 13, ..., aN1, aN2, ..., aNN} expressed as an array of quantitiesreference- the reference point for the absolute quantities- Returns:
- a new AbsMatrixNxN with a unit
- Throws:
IllegalArgumentException- when the size of the data object is not a square
-
of
public static <A extends AbsQuantity<A,Q, AbsMatrixNxN<A,R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>> Q> of(A[] absData) Create a AbsMatrixNxN without needing generics, based on a row-major array of absolute quantities. The unit is taken from the first quantity in the grid. The reference points have to be all the same.- Type Parameters:
A- the absolute quantity typeQ- the quantity typeR- the reference type- Parameters:
absData- the values {a11, a12, ..., A1N, ..., aN1, aN2, ..., aNN} expressed as an array of absolute quantities- Returns:
- a new AbsMatrixNxN with a display unit and reference point
- Throws:
IllegalArgumentException- when the size of the data object is not a perfect square
-
ofSi
public static <A extends AbsQuantity<A,Q, AbsMatrixNxN<A,R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>> Q> ofSi(double[][] gridSi, Unit<?, Q> displayUnit, R reference) Create an AbsMatrixNxN with a unit, based on a 2-dimensional grid with SI-values.- Type Parameters:
A- the absolute quantity typeQ- the quantity typeR- the reference type- Parameters:
gridSi- the matrix values {a11, a12, ..., a1N}, ..., {aN1, aN2, ..., aNN}} expressed in the SI or base unitdisplayUnit- the unit of the data, which will also be used as the display unitreference- the reference point for the absolute quantities- Returns:
- a new AbsMatrixNxN with a unit
- Throws:
IllegalArgumentException- when the data object is not a square grid
-
of
public static <A extends AbsQuantity<A,Q, AbsMatrixNxN<A,R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>> Q> of(double[][] gridInUnit, Unit<?, Q> unit, R reference) Create an AbsMatrixNxN with a unit, based on a 2-dimensional grid.- Type Parameters:
A- the absolute quantity typeQ- the quantity typeR- the reference type- Parameters:
gridInUnit- the matrix values {a11, a12, ..., a1N}, ..., {aN1, aN2, ..., aNN}} expressed in the unitunit- the unit of the data, which will also be used as the display unitreference- the reference point for the absolute quantities- Returns:
- a new AbsMatrixNxN with a unit
- Throws:
IllegalArgumentException- when the data object is not a square grid
-
of
public static <A extends AbsQuantity<A,Q, AbsMatrixNxN<A,R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>> Q> of(Q[][] grid, R reference) Create an AbsMatrixNxN without needing generics.- Type Parameters:
A- the absolute quantity typeQ- the quantity typeR- the reference type- Parameters:
grid- the matrix values {a11, a12, ..., a1N}, ..., {aN1, aN2, ..., aNN}} expressed as an array of quantitiesreference- the reference point for the absolute quantities- Returns:
- a new AbsMatrixNxN with a unit
- Throws:
IllegalArgumentException- when the data object is not a square grid
-
of
public static <A extends AbsQuantity<A,Q, AbsMatrixNxN<A,R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>> Q> of(A[][] absGrid) Create a AbsMatrixNxN without needing generics, based on a row-major array of absolute quantities. The unit is taken from the first quantity in the grid. The reference points have to be all the same.- Type Parameters:
A- the absolute quantity typeQ- the quantity typeR- the reference type- Parameters:
absGrid- the values {{a11, a12, ..., A1N}, ..., {aN1, aN2, ..., aNN}} expressed as an array of absolute quantities- Returns:
- a new AbsMatrixNxN with a display unit and reference point
- Throws:
IllegalArgumentException- when the size of the data object is not a perfect square
-
of
public static <A extends AbsQuantity<A,Q, AbsMatrixNxN<A,R>, Q extends Quantity<Q>, R extends Reference<R, A, Q>> Q> of(MatrixNxN<Q> relativeMatrix, R reference) Create an AbsMatrixNxN without needing generics.- Type Parameters:
A- the absolute quantity typeQ- the quantity typeR- the reference type- Parameters:
relativeMatrix- the relative matrix with values relative to the reference pointreference- the reference point for the absolute quantities- Returns:
- a new AbsMatrixNxN with a unit
-