All Superinterfaces:
AbelianGroup<Matrix>, DeepCopyable, Densifiable, Matrix, MatrixAccess, MatrixRing, MatrixTable, Monoid<Matrix>, Ring<Matrix>, SparseStructure, Table
All Known Implementing Classes:
CSCSparseMatrix, CSRSparseMatrix, DOKSparseMatrix, LILSparseMatrix

public interface SparseMatrix extends Matrix, Densifiable, SparseStructure
A sparse matrix stores only non-zero values. When there are only a few non-zeros in a matrix, sparse matrix saves memory space for storing the matrix. In addition, the matrix operations based on sparse matrix are usually more efficient. The time complexities are proportional to the number of non-zero values instead of the dimension-squared of dense matrix.
See Also:
  • Method Details

    • getEntryList

      List<SparseMatrix.Entry> getEntryList()
      Exports the non-zero values in the matrix as a list of SparseMatrix.Entrys. This is useful for converting between the different formats of SparseMatrix.Entry. For example,
      
       // construct matrix using DOK
       DOKSparseMatrix dok = new DOKSparseMatrix(5, 5);
       // ... insert some values to DOK matrix
       // convert to CSR matrix for efficient matrix operations
       CSRSparseMatrix csr = new CSRSparseMatrix(5, 5, dok.getEntryList());
       
      Returns:
      the sparse entries
    • getValueArray

      SparseMatrix.ValueArray getValueArray()
      Exports the non-zero values in the matrix as arrays of row/column indices and values.
      Returns:
      the arrays of indices and values
      See Also:
    • subMatrix

      SparseMatrix subMatrix(int rowFrom, int rowTo, int colFrom, int colTo)
      Extracts a sub-matrix given the bounds of row and column indices (inclusive).
      Parameters:
      rowFrom - the beginning row index
      rowTo - the ending row index
      colFrom - the beginning column index
      colTo - the ending column index
      Returns:
      A[rowFrom:rowTo, colFrom:colTo]