public class LinkedSparseMatrix extends AbstractMatrix
n x m Matrix with z elements that has a typical
O(z / m) insertion / lookup cost and an iterator that traverses
columns then rows: a good fit for unstructured sparse matrices. A secondary
link maintains fast transpose iteration.
However, memory requirements (
1 instance (8 bytes), 2 int (16 bytes), 2 ref (16 bytes), 1 double (8 bytes) = 48 bytes
per matrix element, plus 8 x numcol + 8 x numrow bytess for the
cache) are slightly higher than structured sparse matrix storage. Note that
on 32 bit JVMs, or on 64 bit JVMs with CompressedOops enabled, references and ints only cost 4 bytes each,
bringing the cost to 28 bytes per element.Matrix.NormnumColumns, numRows| Constructor and Description |
|---|
LinkedSparseMatrix(int numRows,
int numColumns) |
LinkedSparseMatrix(Matrix A) |
LinkedSparseMatrix(MatrixVectorReader r) |
| Modifier and Type | Method and Description |
|---|---|
Matrix |
copy()
Creates a deep copy of the matrix
|
double |
get(int row,
int column)
Returns
A(row,column) |
Iterator<MatrixEntry> |
iterator() |
Matrix |
multAdd(double alpha,
Matrix B,
Matrix C)
C = alpha*A*B + C |
Vector |
multAdd(double alpha,
Vector x,
Vector y)
y = alpha*A*x + y |
Matrix |
scale(double alpha)
A = alpha*A |
void |
set(int row,
int column,
double value)
A(row,column) = value |
Matrix |
transABmultAdd(double alpha,
Matrix B,
Matrix C)
C = alpha*AT*BT + C |
Matrix |
transAmultAdd(double alpha,
Matrix B,
Matrix C)
C = alpha*AT*B + C |
Matrix |
transBmultAdd(double alpha,
Matrix B,
Matrix C)
C = alpha*A*BT + C |
Vector |
transMultAdd(double alpha,
Vector x,
Vector y)
y = alpha*AT*x + y |
Matrix |
transpose()
Transposes the matrix in-place.
|
Matrix |
zero()
Zeros all the entries in the matrix, while preserving any underlying
structure.
|
add, add, add, check, checkMultAdd, checkMultAdd, checkRank1, checkRank1, checkRank2, checkRank2, checkSize, checkSolve, checkSolve, checkTransABmultAdd, checkTransAmultAdd, checkTransBmultAdd, checkTransMultAdd, checkTranspose, checkTranspose, checkTransRank1, checkTransRank2, isSquare, max, max, mult, mult, mult, mult, multAdd, multAdd, norm, norm1, normF, normInf, numColumns, numRows, rank1, rank1, rank1, rank1, rank1, rank1, rank2, rank2, rank2, rank2, set, set, solve, solve, toString, transABmult, transABmult, transABmultAdd, transAmult, transAmult, transAmultAdd, transBmult, transBmult, transBmultAdd, transMult, transMult, transMultAdd, transpose, transRank1, transRank1, transRank2, transRank2, transSolve, transSolveclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitforEach, spliteratorpublic LinkedSparseMatrix(int numRows,
int numColumns)
public LinkedSparseMatrix(Matrix A)
public LinkedSparseMatrix(MatrixVectorReader r) throws IOException
IOExceptionpublic Matrix zero()
Matrixzero in interface Matrixzero in class AbstractMatrixpublic double get(int row,
int column)
MatrixA(row,column)get in interface Matrixget in class AbstractMatrixpublic void set(int row,
int column,
double value)
MatrixA(row,column) = valueset in interface Matrixset in class AbstractMatrixpublic Iterator<MatrixEntry> iterator()
iterator in interface Iterable<MatrixEntry>iterator in class AbstractMatrixpublic Matrix scale(double alpha)
MatrixA = alpha*Ascale in interface Matrixscale in class AbstractMatrixpublic Matrix copy()
Matrixcopy in interface Matrixcopy in class AbstractMatrixpublic Matrix transpose()
Matrixtranspose in interface Matrixtranspose in class AbstractMatrixpublic Vector multAdd(double alpha, Vector x, Vector y)
Matrixy = alpha*A*x + ymultAdd in interface MatrixmultAdd in class AbstractMatrixx - Vector of size A.numColumns()y - Vector of size A.numRows()public Vector transMultAdd(double alpha, Vector x, Vector y)
Matrixy = alpha*AT*x + ytransMultAdd in interface MatrixtransMultAdd in class AbstractMatrixx - Vector of size A.numRows()y - Vector of size A.numColumns()public Matrix multAdd(double alpha, Matrix B, Matrix C)
MatrixC = alpha*A*B + CmultAdd in interface MatrixmultAdd in class AbstractMatrixB - Matrix such that B.numRows() == A.numColumns()
and B.numColumns() == C.numColumns()C - Matrix such that C.numRows() == A.numRows() and
B.numColumns() == C.numColumns()public Matrix transBmultAdd(double alpha, Matrix B, Matrix C)
MatrixC = alpha*A*BT + CtransBmultAdd in interface MatrixtransBmultAdd in class AbstractMatrixB - Matrix such that B.numRows() == A.numRows() and
B.numColumns() == C.numColumns()C - Matrix such that C.numRows() == A.numColumns()
and B.numColumns() == C.numColumns()public Matrix transAmultAdd(double alpha, Matrix B, Matrix C)
MatrixC = alpha*AT*B + CtransAmultAdd in interface MatrixtransAmultAdd in class AbstractMatrixB - Matrix such that B.numRows() == A.numRows() and
B.numColumns() == C.numColumns()C - Matrix such that C.numRows() == A.numColumns()
and B.numColumns() == C.numColumns()public Matrix transABmultAdd(double alpha, Matrix B, Matrix C)
MatrixC = alpha*AT*BT + CtransABmultAdd in interface MatrixtransABmultAdd in class AbstractMatrixB - Matrix such that B.numColumns() == A.numRows()
and B.numRows() == C.numColumns()C - Matrix such that C.numRows() == A.numColumns()
and B.numRows() == C.numColumns()Copyright © 2015. All Rights Reserved.