public class ImmutableMatrix extends Object implements Matrix
Matrix
instance.
It keeps a reference to the matrix instance,
delegates all operations to the instance except for set(int, int, double) which
will always result in an MatrixAccessException
.
Note that the returned values of all operations (e.g., add()
) have the same types as the
original matrix.
Popular usages of this class include, e.g., the final
member of a class, the return value
of a method.
Note that the 'immutability' can be broken if the original matrix is modified.
To avoid this, make a copy of the original matrix before passing it to the constructor. For
example,
ImmutableMatrix immutable = new ImmutableMatrix(m.deepCopy());
Constructor and Description |
---|
ImmutableMatrix(Matrix A)
Construct a read-only version of a matrix.
|
Modifier and Type | Method and Description |
---|---|
Matrix |
add(Matrix that)
this + that
|
Matrix |
deepCopy()
Make a deep copy of the underlying matrix.
|
boolean |
equals(Object obj) |
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.
|
int |
hashCode() |
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 c)
Scale this matrix, A, by a constant.
|
void |
set(int row,
int col,
double value)
Set the matrix entry at [i,j] to a value.
|
Matrix |
t()
Get the transpose of this matrix.
|
String |
toString() |
Matrix |
ZERO()
Get a zero matrix that has the same dimension as this matrix.
|
public ImmutableMatrix(Matrix A)
A
- a matrixpublic void set(int row, int col, double value) throws MatrixAccessException
MatrixAccess
set
in interface MatrixAccess
row
- the row indexcol
- the column indexvalue
- the value to set A[i,j] toMatrixAccessException
- if i or j is out of rangepublic int nRows()
Table
public int nCols()
Table
public double get(int i, int j) throws MatrixAccessException
MatrixAccess
get
in interface MatrixAccess
i
- the row indexj
- the column indexMatrixAccessException
- if i or j is out of rangepublic Vector getRow(int i) throws MatrixAccessException
Matrix
getRow
in interface Matrix
i
- the row indexMatrixAccessException
- when i < 1, or when i > the number of rowspublic Vector getColumn(int j) throws MatrixAccessException
Matrix
getColumn
in interface Matrix
j
- the column indexMatrixAccessException
- when j < 1, or when j > the number of columnspublic Matrix add(Matrix that)
MatrixRing
add
in interface MatrixRing
add
in interface AbelianGroup<Matrix>
that
- a matrixthis
and that
public Matrix minus(Matrix that)
MatrixRing
minus
in interface MatrixRing
minus
in interface AbelianGroup<Matrix>
that
- a matrixthis
and that
public Matrix multiply(Matrix that)
MatrixRing
multiply
in interface MatrixRing
multiply
in interface Monoid<Matrix>
that
- a matrixthis
and that
public Vector multiply(Vector v)
Matrix
public Matrix scaled(double c)
Matrix
public Matrix opposite()
MatrixRing
opposite
in interface MatrixRing
opposite
in interface AbelianGroup<Matrix>
public Matrix ZERO()
MatrixRing
ZERO
in interface MatrixRing
ZERO
in interface AbelianGroup<Matrix>
public Matrix ONE()
MatrixRing
ONE
in interface MatrixRing
ONE
in interface Monoid<Matrix>
public Matrix t()
MatrixRing
t
in interface MatrixRing
public Matrix deepCopy()
ImmutableMatrix
and may be mutable.deepCopy
in interface Matrix
deepCopy
in interface DeepCopyable
Copyright © 2010-2020 NM FinTech Ltd.. All Rights Reserved.