la. SparseMatrix
Source: ladoc.
Sparse Matrix is represented as a dense vector of sparse vectors which correspond to matrix columns.
Methods
new SparseMatrix([arg][, rows])
Sparse Matrix
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix with array
var mat = new la.SparseMatrix([[[0, 2]], [[0, 1], [2, 3]]]);
// create a new sparse matrix with specified max rows
var mat2 = new la.SparseMatrix([[[0, 2]], [[0, 1], [2, 3]]], 3);
Parameters
Name | Type | Optional | Description |
---|---|---|---|
arg |
(Array of Array of Array of number or module:la.SparseMatrix) |
Yes |
Constructor arguments. There are two ways of constructing:
|
rows |
number |
Yes |
Maximal number of rows in sparse vector. It is only in combinantion with nested array of vector elements. |
Properties
cols
Gives the number of columns of sparse matrix. Type number
.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 2]], [[0, 1], [2, 3]]]);
// check the number of columns in sparse matrix
mat.cols;
rows
Gives the number of rows of sparse matrix. Type number
.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 2]], [[0, 1], [2, 3]]]);
// check the number of rows in sparse matrix
mat.rows;
Methods
at(rowIdx, colIdx) → number
Returns an element of the sparse matrix at the given location.
Example
// import la module
var la = require('qminer').la;
// create a sparse matrix
var mat = new la.SparseMatrix([[[0, 2]], [[0, 1], [2, 3]]]);
// get the value at the position (1, 1)
mat.at(1, 1); // returns 3
Parameters
Name | Type | Optional | Description |
---|---|---|---|
rowIdx |
number |
|
Row index (zero based). |
colIdx |
number |
|
Column index (zero based). |
- Returns
-
number
B Matrix value.
clear() → module:la.SparseMatrix
Clear content of the matrix and sets its row dimension to -1.
Example
//import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 2], [2, -3]], [[1, 1], [3, -2]]]);
// clear the matrix
mat.clear();
- Returns
-
module:la.SparseMatrix
B Self. All the content has been cleared.
colNorms() → module:la.Vector
Returns the vector of column norms of sparse matrix.
Example
//import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 2], [2, -3]], [[1, 1], [3, -2]]]);
// get the column norms
var norms = mat.colNorms();
- Returns
-
module:la.Vector
B Vector of column norms. Ihe i-th value of the return vector is the norm of i-th column of sparse matrix.
frob() → number
Returns the frobenious norm of sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 1], [1, 3]], [[0, 2], [1, 4]]]);
// get the frobenious norm of sparse matrix
var norm = mat.frob(); // returns sqrt(30)
- Returns
-
number
B Frobenious norm of sparse matrix.
frob2() → number
Calculates the frobenious norm squared of the matrix.
Example
// import la module
var la = require('qminer').la;
// create a sparse matrix
var spMat = new la.SparseMatrix([[[0, 1], [1, 5]], [[0, 2], [2, -3]]]);
// get the forbenious norm squared of the sparse matrix
var frob = spMat.frob2();
- Returns
-
number
B Frobenious norm squared.
full() → module:la.Matrix
Returns the dense representation of sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 2]], [[0, 1], [2, 3]]]);
// create a dense representation of sparse matrix
// returns the dense matrix:
// 2 1
// 0 0
// 0 3
mat.full();
- Returns
-
module:la.Matrix
B Dense representation of sparse matrix.
getCol(colIdx) → module:la.SparseVector
Returns the column of the sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a sparse matrix
var mat = new la.SparseMatrix([[[0, 3], [1, 2]], [[1, -2], [3, 4]], [[10, 8]]]);
// get the first column as a vector
var first = mat.getCol(0); // returns the first column of the sparse matrix
Parameter
Name | Type | Optional | Description |
---|---|---|---|
colIdx |
number |
|
The column index (zero based). |
- Returns
-
module:la.SparseVector
B Sparse vector corresponding to thecolIdx
-th column of sparse matrix.
getColSubmatrix(columnIdVec) → module:la.SparseMatrix
Returns a submatrix containing only selected columns. Columns are identified by a vector of ids.
Example
//import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 2], [2, -3]], [[1, 1], [3, -2]]]);
// get the submatrix containing the 1, 2 and 4 column
var submat = mat.getColSubmatrix(new la.IntVector([1]));
Parameter
Name | Type | Optional | Description |
---|---|---|---|
columnIdVec |
|
Integer vector containing selected column ids. |
- Returns
-
module:la.SparseMatrix
B The submatrix containing the the columns of the original matrix.
load(fin) → module:la.Matrix
Loads the sparse matrix from input stream.
Example
// import the modules
var fs = require('qminer').fs;
var la = require('qminer').la;
// create an empty matrix
var mat = new la.SparseMatrix();
// open a read stream ('mat.dat' was previously created)
var fin = fs.openRead('mat.dat');
// load the matrix
mat.load(fin);
Parameter
Name | Type | Optional | Description |
---|---|---|---|
fin |
|
Input stream. |
- Returns
-
module:la.Matrix
B Self. The content has been loaded usingfin
.
minus(mat) → module:la.SparseMatrix
Substraction of two matrices.
Example
// import la module
var la = require('qminer').la;
// create two sparse matrices
var mat = new la.SparseMatrix([[[0, 1], [3, 2]], [[1, -3]]]);
var mat2 = new la.SparseMatrix([[[0, 3]],[[2, 1]]]);
// get the sum of the two matrices
// returns the sum ( insparse form)
// -2 0
// 0 -3
// 0 -1
// 2 0
var diff = mat.minus(mat2);
Parameter
Name | Type | Optional | Description |
---|---|---|---|
mat |
|
The second sparse matrix. |
- Returns
-
module:la.SparseMatrix
B The difference of the two sparse matrices.
multiply(arg) → (module:la.Vector or module:la.Matrix)
Multiplies argument with sparse maatrix.
Example
// import la module
var la = require('qminer').la;
// create new sparse matrix
var mat = new la.SparseMatrix([[[0, 2], [3, 5]], [[1, -3]]]);
// create a vector
var vec = new la.Vector([3, -2]);
// multiply the matrix and vector
var vec2 = mat.multiply(vec);
Parameter
Name | Type | Optional | Description |
---|---|---|---|
arg |
(number, module:la.Vector, module:la.SparseVector, module:la.Matrix, or module:la.SparseMatrix) |
|
Multiplication input. |
- Returns
-
(module:la.Vector or module:la.Matrix)
B
1. module:la.Matrix, ifarg
is number, module:la.Matrix or module:la.SparseMatrix.
2. module:la.Vector, ifarg
is module:la.Vector or module:la.SparseVector.
multiplyT(arg) → (module:la.Vector or module:la.Matrix)
Sparse matrix transpose and multiplies with argument.
Example
// import la module
var la = require('qminer').la;
// create new sparse matrix
var mat = new la.SparseMatrix([[[0, 2], [3, 5]], [[1, -3]]]);
// create a dense matrix
var mat2 = new la.Matrix([[0, 1], [2, 3], [4, 5], [-1, 3]]);
// transpose mat and multiply it with mat2
var mat3 = mat.multiplyT(mat2);
Parameter
Name | Type | Optional | Description |
---|---|---|---|
arg |
(number, module:la.Vector, module:la.SparseVector, module:la.Matrix, or module:la.SparseMatrix) |
|
Multiplication input. |
- Returns
-
(module:la.Vector or module:la.Matrix)
B
1. module:la.Matrix, ifarg
is number, module:la.Matrix or module:la.SparseMatrix.
2. module:la.Vector, ifarg
is module:la.Vector or module:la.SparseVector.
nnz() → number
Returns the number of non-zero elements of sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a sparse matrix
var spMat = new la.SparseMatrix([[[0, 1], [1, 5]], [[0, 2], [2, -3]]]);
// get the number of non-zero elements
// returns 4
var nnz = spMat.nnz();
- Returns
-
number
B Number of non-zero elements.
normalizeCols() → module:la.SparseMatrix
Normalizes columns of sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 2]], [[0, 1], [2, 3]]]);
// normalize matrix columns
// The new matrix elements are:
// 1 0.316227
// 0 0
// 0 0.948683
mat.normalizeCols();
- Returns
-
module:la.SparseMatrix
B Self. The columns of the sparse matrix are normalized.
plus(mat) → module:la.SparseMatrix
Addition of two matrices.
Example
// import la module
var la = require('qminer').la;
// create two sparse matrices
var mat = new la.SparseMatrix([[[0, 1], [3, 2]], [[1, -3]]]);
var mat2 = new la.SparseMatrix([[[0, 3]],[[2, 1]]]);
// get the sum of the two matrices
// returns the sum ( insparse form)
// 4 0
// 0 -3
// 0 1
// 2 0
var sum = mat.plus(mat2);
Parameter
Name | Type | Optional | Description |
---|---|---|---|
mat |
|
The second sparse matrix. |
- Returns
-
module:la.SparseMatrix
B Sum of the two sparse matrices.
print()
Prints sparse matrix on screen.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var spMat = new la.SparseMatrix([[[0, 1]], [[0, 3], [1, 8]]]);
// print sparse matrix on screen
// each row represents a nonzero element, where first value is row index, second
// value is column index and third value is element value. For this matrix:
// 0 0 1.000000
// 0 1 3.000000
// 1 1 8.000000
spMat.print();
push(spVec) → module:la.SparseMatrix
Attaches a column to the sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a new sparse vector
var mat = new la.SparseMatrix([[[0, 2], [3, 5]], [[1, -3]]]);
// create a new vector
var vec = new la.SparseVector([[0, 2], [2, -3]]);
// push the newly created vector to the matrix
// the new matrix is going to be (in sparse form)
// 2 0 2
// 0 -3 0
// 0 0 -3
// 5 0 0
mat.push(vec);
Parameter
Name | Type | Optional | Description |
---|---|---|---|
spVec |
|
Attached column as sparse vector. |
- Returns
-
module:la.SparseMatrix
B Self. The last column is now the addedspVec
and the number of columns is now bigger by one.
put(rowIdx, colIdx, num) → module:la.SparseMatrix
Puts an element in sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 3], [1, 2]], [[1, -2], [3, 4]], [[10, 8]]]);
// set the value at position (2, 2) to -4
mat.put(2, 2, -4);
Parameters
Name | Type | Optional | Description |
---|---|---|---|
rowIdx |
number |
|
Row index (zero based). |
colIdx |
number |
|
Column index (zero based). |
num |
number |
|
Element value. |
- Returns
-
module:la.SparseMatrix
B Self. The value at position (rowIdx
,colIdx
) is changed.
save(fout[, saveMatlab]) → module:fs.FOut
Saves the sparse matrix as output stream.
Example
// import the modules
var fs = require('qminer').fs;
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 1]], [[0, 3], [1, 12]]]);
// open write stream
var fout = fs.openWrite('mat.dat');
// save matrix and close write stream
mat.save(fout).close();
Parameters
Name | Type | Optional | Description |
---|---|---|---|
fout |
|
Output stream. |
|
saveMatlab |
boolean |
Yes |
If true, saves using matlab three column text format. Otherwise, saves using binary format. Defaults to |
- Returns
-
module:fs.FOut
B The output streamfout
.
setCol(colIdx, spVec) → module:la.SparseMatrix
Sets a column in sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 3], [1, 2]], [[1, -2], [3, 4]], [[10, 8]]]);
// create a new sparse vector to replace the third column
var vec = new la.SparseVector([[0, 3], [2, -5]]);
// set the third column of mat to vec
mat.setCol(2, vec); // returns mat with the third column changed
Parameters
Name | Type | Optional | Description |
---|---|---|---|
colIdx |
number |
|
Column index (zero based). |
spVec |
|
The new column sparse vector. |
- Returns
-
module:la.SparseMatrix
B Self. ThecolIdx
-th column has been replaced withspVec
.
setRowDim(rowDim)
Sets the row dimension.
Example
// import the modules
var la = require('qminer').la;
// create an empty matrix
var mat = new la.SparseMatrix();
mat.setRowDim(2);
mat.rows // prints 2
Parameter
Name | Type | Optional | Description |
---|---|---|---|
rowDim |
number |
|
Row dimension. |
toString() → string
Returns a string displaying rows, columns and number of non-zero elements of sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 1]], [[0, 2], [1, 8]]]);
// create the string
var text = mat.toString(); // returns 'rows: -1, cols: 2, nnz: 3'
- Returns
-
string
B String displaying row, columns and number of non-zero elements.
transpose() → module:la.SparseMatrix
Returns the transposed sparse matrix.
Example
// import la module
var la = require('qminer').la;
// create a new sparse matrix
var mat = new la.SparseMatrix([[[0, 2], [2, -3]], [[1, 1], [3, -2]]]);
// transpose the sparse matrix
// returns the transposed matrix (in sparse form)
// 2 0 -3 0
// 0 1 0 -2
mat.transpose();
- Returns
-
module:la.SparseMatrix
B Transposed sparse matrix.