Class SubMatrixRef
- java.lang.Object
-
- dev.nm.algebra.linear.matrix.doubles.operation.SubMatrixRef
-
- All Implemented Interfaces:
Matrix
,MatrixAccess
,MatrixRing
,MatrixTable
,AbelianGroup<Matrix>
,Monoid<Matrix>
,Ring<Matrix>
,Table
,DeepCopyable
public class SubMatrixRef extends Object implements Matrix
This is a 'reference' to a sub-matrix of a larger matrix without copying it. For performance reason, we often want to work with a sub-matrix without copying it. The reference sub-matrix is immutable.
-
-
Constructor Summary
Constructors Constructor Description SubMatrixRef(Matrix A)
Constructs a reference to the whole matrix.SubMatrixRef(Matrix A, int[] rows, int[] cols)
Constructs a sub-matrix reference.SubMatrixRef(Matrix A, int rowFrom, int rowTo, int colFrom, int colTo)
Constructs a sub-matrix reference.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Matrix
add(Matrix that)
this + thatSubMatrixRef
deepCopy()
Returnsthis
as the reference is immutable.double
get(int i, int j)
Get the matrix entry at [i,j].Vector
getColumn(int j)
Get the specified column in the matrix as a vector.Vector
getRow(int i)
Get the specified row in the matrix as a vector.Matrix
minus(Matrix that)
this - thatMatrix
multiply(Matrix that)
this * thatVector
multiply(Vector v)
Right multiply this matrix, A, by a vector.int
nCols()
Gets the number of columns.int
nRows()
Gets the number of rows.Matrix
ONE()
Get an identity matrix that has the same dimension as this matrix.Matrix
opposite()
Get the opposite of this matrix.Matrix
scaled(double scalar)
Scale this matrix, A, by a constant.void
set(int i, int j, double value)
Deprecated.SubMatrixRef is immutableMatrix
t()
Get the transpose of this matrix.String
toString()
Matrix
ZERO()
Get a zero matrix that has the same dimension as this matrix.
-
-
-
Constructor Detail
-
SubMatrixRef
public SubMatrixRef(Matrix A, int[] rows, int[] cols)
Constructs a sub-matrix reference.- Parameters:
A
- a matrixrows
- the row indicescols
- the column indices- Throws:
IndexOutOfBoundsException
- if rowFrom, rowTo, colFrom, or colTo is invalid
-
SubMatrixRef
public SubMatrixRef(Matrix A, int rowFrom, int rowTo, int colFrom, int colTo)
Constructs a sub-matrix reference.- Parameters:
A
- a matrixrowFrom
- the beginning row indexrowTo
- the ending row indexcolFrom
- the beginning column indexcolTo
- the ending column index
-
SubMatrixRef
public SubMatrixRef(Matrix A)
Constructs a reference to the whole matrix.- Parameters:
A
- a matrix
-
-
Method Detail
-
nRows
public int nRows()
Description copied from interface:Table
Gets the number of rows. Rows count from 1.
-
nCols
public int nCols()
Description copied from interface:Table
Gets the number of columns. Columns count from 1.
-
get
public double get(int i, int j)
Description copied from interface:MatrixAccess
Get the matrix entry at [i,j].- Specified by:
get
in interfaceMatrixAccess
- Parameters:
i
- the row indexj
- the column index- Returns:
- A[i,j]
-
getRow
public Vector getRow(int i)
Description copied from interface:Matrix
Get the specified row in the matrix as a vector.
-
getColumn
public Vector getColumn(int j)
Description copied from interface:Matrix
Get the specified column in the matrix as a vector.
-
add
public Matrix add(Matrix that)
Description copied from interface:MatrixRing
this + that- Specified by:
add
in interfaceAbelianGroup<Matrix>
- Specified by:
add
in interfaceMatrixRing
- Parameters:
that
- a matrix- Returns:
- the sum of
this
andthat
-
minus
public Matrix minus(Matrix that)
Description copied from interface:MatrixRing
this - that- Specified by:
minus
in interfaceAbelianGroup<Matrix>
- Specified by:
minus
in interfaceMatrixRing
- Parameters:
that
- a matrix- Returns:
- the difference between
this
andthat
-
multiply
public Matrix multiply(Matrix that)
Description copied from interface:MatrixRing
this * that- Specified by:
multiply
in interfaceMatrixRing
- Specified by:
multiply
in interfaceMonoid<Matrix>
- Parameters:
that
- a matrix- Returns:
- the product of
this
andthat
-
multiply
public Vector multiply(Vector v)
Description copied from interface:Matrix
Right multiply this matrix, A, by a vector.
-
scaled
public Matrix scaled(double scalar)
Description copied from interface:Matrix
Scale this matrix, A, by a constant.
-
opposite
public Matrix opposite()
Description copied from interface:MatrixRing
Get the opposite of this matrix.- Specified by:
opposite
in interfaceAbelianGroup<Matrix>
- Specified by:
opposite
in interfaceMatrixRing
- Returns:
- -this
- See Also:
- Wikipedia: Additive inverse
-
ZERO
public Matrix ZERO()
Description copied from interface:MatrixRing
Get a zero matrix that has the same dimension as this matrix.- Specified by:
ZERO
in interfaceAbelianGroup<Matrix>
- Specified by:
ZERO
in interfaceMatrixRing
- Returns:
- the 0 matrix
-
ONE
public Matrix ONE()
Description copied from interface:MatrixRing
Get an identity matrix that has the same dimension as this matrix. For a non-square matrix, it zeros out the rows (columns) with index > nCols (nRows).- Specified by:
ONE
in interfaceMatrixRing
- Specified by:
ONE
in interfaceMonoid<Matrix>
- Returns:
- an identity matrix
-
t
public Matrix t()
Description copied from interface:MatrixRing
Get the transpose of this matrix. This is the involution on the matrix ring.- Specified by:
t
in interfaceMatrixRing
- Returns:
- the transpose of this matrix
-
deepCopy
public SubMatrixRef deepCopy()
Returnsthis
as the reference is immutable.- Specified by:
deepCopy
in interfaceDeepCopyable
- Specified by:
deepCopy
in interfaceMatrix
- Returns:
this
-
set
@Deprecated public void set(int i, int j, double value) throws MatrixAccessException
Deprecated.SubMatrixRef is immutableDescription copied from interface:MatrixAccess
Set the matrix entry at [i,j] to a value. This is the only method that may change a matrix.- Specified by:
set
in interfaceMatrixAccess
- Parameters:
i
- the row indexj
- the column indexvalue
- the value to set A[i,j] to- Throws:
MatrixAccessException
- if i or j is out of range
-
-