# 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

Modifier and Type
Method
Description
Matrix
add(Matrix that)
this + that
SubMatrixRef
deepCopy()
Returns this 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 - that
Matrix
multiply(Matrix that)
this * that
Vector
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 immutable
Matrix
t()
Get the transpose of this matrix.
String
toString()

Matrix
ZERO()
Get a zero matrix that has the same dimension as this matrix.

### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

### Methods inherited from interface dev.nm.algebra.linear.matrix.doubles.Matrix

toCSV
• ## Constructor Details

• ### SubMatrixRef

public SubMatrixRef(Matrix A, int[] rows, int[] cols)
Constructs a sub-matrix reference.
Parameters:
A - a matrix
rows - the row indices
cols - 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 matrix
rowFrom - the beginning row index
rowTo - the ending row index
colFrom - the beginning column index
colTo - the ending column index
• ### SubMatrixRef

public SubMatrixRef(Matrix A)
Constructs a reference to the whole matrix.
Parameters:
A - a matrix
• ## Method Details

• ### nRows

public int nRows()
Description copied from interface: Table
Gets the number of rows. Rows count from 1.
Specified by:
nRows in interface Table
Returns:
the number of rows
• ### nCols

public int nCols()
Description copied from interface: Table
Gets the number of columns. Columns count from 1.
Specified by:
nCols in interface Table
Returns:
the number of columns
• ### get

public double get(int i, int j)
Description copied from interface: MatrixAccess
Get the matrix entry at [i,j].
Specified by:
get in interface MatrixAccess
Parameters:
i - the row index
j - 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.
Specified by:
getRow in interface Matrix
Parameters:
i - the row index
Returns:
the vector A[i, ]
• ### getColumn

public Vector getColumn(int j)
Description copied from interface: Matrix
Get the specified column in the matrix as a vector.
Specified by:
getColumn in interface Matrix
Parameters:
j - the column index
Returns:
a vector A[, j]
• ### add

public Matrix add(Matrix that)
Description copied from interface: MatrixRing
this + that
Specified by:
add in interface AbelianGroup<Matrix>
Specified by:
add in interface MatrixRing
Parameters:
that - a matrix
Returns:
the sum of this and that
• ### minus

public Matrix minus(Matrix that)
Description copied from interface: MatrixRing
this - that
Specified by:
minus in interface AbelianGroup<Matrix>
Specified by:
minus in interface MatrixRing
Parameters:
that - a matrix
Returns:
the difference between this and that
• ### multiply

public Matrix multiply(Matrix that)
Description copied from interface: MatrixRing
this * that
Specified by:
multiply in interface MatrixRing
Specified by:
multiply in interface Monoid<Matrix>
Parameters:
that - a matrix
Returns:
the product ofthis and that
• ### multiply

public Vector multiply(Vector v)
Description copied from interface: Matrix
Right multiply this matrix, A, by a vector.
Specified by:
multiply in interface Matrix
Parameters:
v - a vector
Returns:
Av, a vector
• ### scaled

public Matrix scaled(double scalar)
Description copied from interface: Matrix
Scale this matrix, A, by a constant.
Specified by:
scaled in interface Matrix
Parameters:
scalar - a double
Returns:
cA
• ### opposite

public Matrix opposite()
Description copied from interface: MatrixRing
Get the opposite of this matrix.
Specified by:
opposite in interface AbelianGroup<Matrix>
Specified by:
opposite in interface MatrixRing
Returns:
-this
See Also:
• ### 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 interface AbelianGroup<Matrix>
Specified by:
ZERO in interface MatrixRing
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 interface MatrixRing
Specified by:
ONE in interface Monoid<Matrix>
Returns:
an identity matrix
• ### toString

public String toString()
Overrides:
toString in class Object
• ### 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 interface MatrixRing
Returns:
the transpose of this matrix
• ### deepCopy

public SubMatrixRef deepCopy()
Returns this as the reference is immutable.
Specified by:
deepCopy in interface DeepCopyable
Specified by:
deepCopy in interface Matrix
Returns:
this
• ### set

public void set(int i, int j, double value) throws MatrixAccessException
Deprecated.
SubMatrixRef is immutable
Description 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 interface MatrixAccess
Parameters:
i - the row index
j - the column index
value - the value to set A[i,j] to
Throws:
MatrixAccessException - if i or j is out of range