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 Matrixadd(Matrix that)this + thatSubMatrixRefdeepCopy()Returnsthisas the reference is immutable.doubleget(int i, int j)Get the matrix entry at [i,j].VectorgetColumn(int j)Get the specified column in the matrix as a vector.VectorgetRow(int i)Get the specified row in the matrix as a vector.Matrixminus(Matrix that)this - thatMatrixmultiply(Matrix that)this * thatVectormultiply(Vector v)Right multiply this matrix, A, by a vector.intnCols()Gets the number of columns.intnRows()Gets the number of rows.MatrixONE()Get an identity matrix that has the same dimension as this matrix.Matrixopposite()Get the opposite of this matrix.Matrixscaled(double scalar)Scale this matrix, A, by a constant.voidset(int i, int j, double value)Deprecated.SubMatrixRef is immutableMatrixt()Get the transpose of this matrix.StringtoString()MatrixZERO()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:TableGets the number of rows. Rows count from 1.
-
nCols
public int nCols()
Description copied from interface:TableGets the number of columns. Columns count from 1.
-
get
public double get(int i, int j)Description copied from interface:MatrixAccessGet the matrix entry at [i,j].- Specified by:
getin interfaceMatrixAccess- Parameters:
i- the row indexj- the column index- Returns:
- A[i,j]
-
getRow
public Vector getRow(int i)
Description copied from interface:MatrixGet the specified row in the matrix as a vector.
-
getColumn
public Vector getColumn(int j)
Description copied from interface:MatrixGet the specified column in the matrix as a vector.
-
add
public Matrix add(Matrix that)
Description copied from interface:MatrixRingthis + that- Specified by:
addin interfaceAbelianGroup<Matrix>- Specified by:
addin interfaceMatrixRing- Parameters:
that- a matrix- Returns:
- the sum of
thisandthat
-
minus
public Matrix minus(Matrix that)
Description copied from interface:MatrixRingthis - that- Specified by:
minusin interfaceAbelianGroup<Matrix>- Specified by:
minusin interfaceMatrixRing- Parameters:
that- a matrix- Returns:
- the difference between
thisandthat
-
multiply
public Matrix multiply(Matrix that)
Description copied from interface:MatrixRingthis * that- Specified by:
multiplyin interfaceMatrixRing- Specified by:
multiplyin interfaceMonoid<Matrix>- Parameters:
that- a matrix- Returns:
- the product of
thisandthat
-
multiply
public Vector multiply(Vector v)
Description copied from interface:MatrixRight multiply this matrix, A, by a vector.
-
scaled
public Matrix scaled(double scalar)
Description copied from interface:MatrixScale this matrix, A, by a constant.
-
opposite
public Matrix opposite()
Description copied from interface:MatrixRingGet the opposite of this matrix.- Specified by:
oppositein interfaceAbelianGroup<Matrix>- Specified by:
oppositein interfaceMatrixRing- Returns:
- -this
- See Also:
- Wikipedia: Additive inverse
-
ZERO
public Matrix ZERO()
Description copied from interface:MatrixRingGet a zero matrix that has the same dimension as this matrix.- Specified by:
ZEROin interfaceAbelianGroup<Matrix>- Specified by:
ZEROin interfaceMatrixRing- Returns:
- the 0 matrix
-
ONE
public Matrix ONE()
Description copied from interface:MatrixRingGet 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:
ONEin interfaceMatrixRing- Specified by:
ONEin interfaceMonoid<Matrix>- Returns:
- an identity matrix
-
t
public Matrix t()
Description copied from interface:MatrixRingGet the transpose of this matrix. This is the involution on the matrix ring.- Specified by:
tin interfaceMatrixRing- Returns:
- the transpose of this matrix
-
deepCopy
public SubMatrixRef deepCopy()
Returnsthisas the reference is immutable.- Specified by:
deepCopyin interfaceDeepCopyable- Specified by:
deepCopyin interfaceMatrix- Returns:
this
-
set
@Deprecated public void set(int i, int j, double value) throws MatrixAccessException
Deprecated.SubMatrixRef is immutableDescription copied from interface:MatrixAccessSet the matrix entry at [i,j] to a value. This is the only method that may change a matrix.- Specified by:
setin 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
-
-