Package org.ejml.data
Class DMatrixSparseCSC
- java.lang.Object
-
- org.ejml.data.DMatrixSparseCSC
-
- All Implemented Interfaces:
java.io.Serializable,DMatrix,DMatrixSparse,Matrix,MatrixSparse,ReshapeMatrix
public class DMatrixSparseCSC extends java.lang.Object implements DMatrixSparse
Compressed Column (CC) sparse matrix format. Only non-zero elements are stored.
Format:
TODO fully describe
Row indexes for column j are stored in rol_idx[col_idx[j]] to rol_idx[col_idx[j+1]-1]. The values for the corresponding elements are stored at data[col_idx[j]] to data[col_idx[j+1]-1].
Row indexes must be specified in chronological order.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.ejml.data.DMatrixSparse
DMatrixSparse.CoordinateRealValue
-
-
Field Summary
Fields Modifier and Type Field Description int[]col_idxStores the range of indexes in the non-zero lists that belong to each column.booleanindicesSortedFlag that's used to indicate of the row indices are sorted or not.intnumColsNumber of columns in the matrixintnumRowsNumber of rows in the matrixintnz_lengthLength of data.int[]nz_rowsSpecifies which row a specific non-zero value corresponds to.double[]nz_valuesStorage for non-zero values.
-
Constructor Summary
Constructors Constructor Description DMatrixSparseCSC(int numRows, int numCols)Constructor with a default arrayLength of zero.DMatrixSparseCSC(int numRows, int numCols, int arrayLength)Specifies shape and number of non-zero elements that can be stored.DMatrixSparseCSC(DMatrixSparseCSC original)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DMatrixSparseCSCcopy()Creates an exact copy of the matrixvoidcopyStructure(DMatrixSparseCSC orig)Copies the non-zero structure of orig into "this"DMatrixSparseCSCcreate(int numRows, int numCols)Creates a new matrix of the same type with the specified shapejava.util.Iterator<DMatrixSparse.CoordinateRealValue>createCoordinateIterator()Creates an iterator which will go through each non-zero value in the sparse matrix.DMatrixSparseCSCcreateLike()Creates a new matrix with the same shape as this matrixdoubleget(int row, int col)Returns the value of value of the specified matrix element.intgetNonZeroLength()Returns the number of non-zero elements.intgetNumCols()Returns the number of columns in this matrix.intgetNumElements()Returns the number of elements in this matrix, which is the number of rows times the number of columns.intgetNumRows()Returns the number of rows in this matrix.MatrixTypegetType()Returns the type of matrixvoidgrowMaxColumns(int desiredColumns, boolean preserveValue)Increases the maximum number of columns in the matrix.voidgrowMaxLength(int arrayLength, boolean preserveValue)Increases the maximum size of the data array so that it can store sparse data up to 'length'.voidhistogramToStructure(int[] histogram)Given the histogram of columns compute the col_idx for the matrix.booleanisAssigned(int row, int col)Is the specified element explicitly assigned a valuebooleanisFull()Returns true if number of non-zero elements is the maximum sizebooleanisIndicesSorted()If the indices has been sorted or notintnz_index(int row, int col)Returns the index in nz_rows for the element at (row,col) if it already exists in the matrix.voidprint()Prints the matrix to standard out using standard formatting.voidprint(java.lang.String format)Prints the matrix to standard out with the specified formatting.voidprintNonZero()Prints to standard out the non-zero elements only.voidremove(int row, int col)If the specified element is non-zero it is removed from the structurevoidreshape(int numRows, int numCols)Changes the number of rows and columns in the matrix.voidreshape(int numRows, int numCols, int arrayLength)Reshapes the matrix so that it can store a matrix with the specified dimensions and the number of non-zero elements.voidset(int row, int col, double val)Sets the value of the specified matrix element.voidset(Matrix original)Sets this matrix to be identical to the 'original' matrix passed in.voidshrinkArrays()Reduces the size of internal data structures to their minimal size.voidsortIndices(SortCoupledArray_F64 sorter)Sorts the row indices in ascending order.doubleunsafe_get(int row, int col)Same asDMatrix.get(int, int)but does not perform bounds check on input parameters.voidunsafe_set(int row, int col, double val)Same asDMatrix.set(int, int, double)but does not perform bounds check on input parameters.voidzero()Sets all values inside the matrix to zero
-
-
-
Field Detail
-
nz_values
public double[] nz_values
Storage for non-zero values. Only valid up to length-1.
-
nz_length
public int nz_length
Length of data. Number of non-zero values in the matrix
-
nz_rows
public int[] nz_rows
Specifies which row a specific non-zero value corresponds to. If they are sorted or not with in each column is specified by theindicesSortedflag.
-
col_idx
public int[] col_idx
Stores the range of indexes in the non-zero lists that belong to each column. Column 'i' corresponds to indexes col_idx[i] to col_idx[i+1]-1, inclusive.
-
numRows
public int numRows
Number of rows in the matrix
-
numCols
public int numCols
Number of columns in the matrix
-
indicesSorted
public boolean indicesSorted
Flag that's used to indicate of the row indices are sorted or not.
-
-
Constructor Detail
-
DMatrixSparseCSC
public DMatrixSparseCSC(int numRows, int numCols)Constructor with a default arrayLength of zero.- Parameters:
numRows- Number of rowsnumCols- Number of columns
-
DMatrixSparseCSC
public DMatrixSparseCSC(int numRows, int numCols, int arrayLength)Specifies shape and number of non-zero elements that can be stored.- Parameters:
numRows- Number of rowsnumCols- Number of columnsarrayLength- Initial maximum number of non-zero elements that can be in the matrix
-
DMatrixSparseCSC
public DMatrixSparseCSC(DMatrixSparseCSC original)
-
-
Method Detail
-
getNumRows
public int getNumRows()
Description copied from interface:MatrixReturns the number of rows in this matrix.- Specified by:
getNumRowsin interfaceMatrix- Returns:
- Number of rows.
-
getNumCols
public int getNumCols()
Description copied from interface:MatrixReturns the number of columns in this matrix.- Specified by:
getNumColsin interfaceMatrix- Returns:
- Number of columns.
-
copy
public DMatrixSparseCSC copy()
Description copied from interface:MatrixCreates an exact copy of the matrix
-
createLike
public DMatrixSparseCSC createLike()
Description copied from interface:MatrixCreates a new matrix with the same shape as this matrix- Specified by:
createLikein interfaceMatrix
-
set
public void set(Matrix original)
Description copied from interface:MatrixSets this matrix to be identical to the 'original' matrix passed in.
-
print
public void print()
Description copied from interface:MatrixPrints the matrix to standard out using standard formatting. This is the same as calling print("%e")
-
print
public void print(java.lang.String format)
Description copied from interface:MatrixPrints the matrix to standard out with the specified formatting.
-
printNonZero
public void printNonZero()
Description copied from interface:MatrixSparsePrints to standard out the non-zero elements only.- Specified by:
printNonZeroin interfaceMatrixSparse
-
isAssigned
public boolean isAssigned(int row, int col)Description copied from interface:MatrixSparseIs the specified element explicitly assigned a value- Specified by:
isAssignedin interfaceMatrixSparse- Parameters:
row- the rowcol- the column- Returns:
- true if it has been assigned a value or false if not
-
get
public double get(int row, int col)Description copied from interface:DMatrixReturns the value of value of the specified matrix element.
-
unsafe_get
public double unsafe_get(int row, int col)Description copied from interface:DMatrixSame asDMatrix.get(int, int)but does not perform bounds check on input parameters. This results in about a 25% speed increase but potentially sacrifices stability and makes it more difficult to track down simple errors. It is not recommended that this function be used, except in highly optimized code where the bounds are implicitly being checked.- Specified by:
unsafe_getin interfaceDMatrix- Parameters:
row- Matrix element's row index..col- Matrix element's column index.- Returns:
- The specified element's value.
-
nz_index
public int nz_index(int row, int col)Returns the index in nz_rows for the element at (row,col) if it already exists in the matrix. If not then -1 is returned.- Parameters:
row- row coordinatecol- column coordinate- Returns:
- nz_row index or -1 if the element does not exist
-
set
public void set(int row, int col, double val)Description copied from interface:DMatrixSets the value of the specified matrix element.
-
unsafe_set
public void unsafe_set(int row, int col, double val)Description copied from interface:DMatrixSame asDMatrix.set(int, int, double)but does not perform bounds check on input parameters. This results in about a 25% speed increase but potentially sacrifices stability and makes it more difficult to track down simple errors. It is not recommended that this function be used, except in highly optimized code where the bounds are implicitly being checked.- Specified by:
unsafe_setin interfaceDMatrix- Parameters:
row- Matrix element's row index..col- Matrix element's column index.val- The element's new value.
-
remove
public void remove(int row, int col)Description copied from interface:MatrixSparseIf the specified element is non-zero it is removed from the structure- Specified by:
removein interfaceMatrixSparse- Parameters:
row- the rowcol- the column
-
zero
public void zero()
Description copied from interface:MatrixSets all values inside the matrix to zero- Specified by:
zeroin interfaceMatrix- Specified by:
zeroin interfaceMatrixSparse
-
create
public DMatrixSparseCSC create(int numRows, int numCols)
Description copied from interface:MatrixCreates a new matrix of the same type with the specified shape
-
getNonZeroLength
public int getNonZeroLength()
Description copied from interface:MatrixSparseReturns the number of non-zero elements.- Specified by:
getNonZeroLengthin interfaceMatrixSparse
-
getNumElements
public int getNumElements()
Description copied from interface:DMatrixReturns the number of elements in this matrix, which is the number of rows times the number of columns.- Specified by:
getNumElementsin interfaceDMatrix- Returns:
- Number of elements in this matrix.
-
reshape
public void reshape(int numRows, int numCols, int arrayLength)Description copied from interface:MatrixSparseReshapes the matrix so that it can store a matrix with the specified dimensions and the number of non-zero elements. The reshaped matrix will be empty.- Specified by:
reshapein interfaceMatrixSparse- Parameters:
numRows- number of rowsnumCols- number of columnsarrayLength- Array length for storing non-zero elements.
-
reshape
public void reshape(int numRows, int numCols)Description copied from interface:MatrixSparseChanges the number of rows and columns in the matrix. The graph structure is flushed and the matrix will be empty/all zeros. Similar toMatrixSparse.reshape(int, int, int), but the storage for non-zero elements is not changed- Specified by:
reshapein interfaceMatrixSparse- Specified by:
reshapein interfaceReshapeMatrix- Parameters:
numRows- number of rowsnumCols- number of columns
-
shrinkArrays
public void shrinkArrays()
Description copied from interface:MatrixSparseReduces the size of internal data structures to their minimal size. No information is lost but the arrays will change- Specified by:
shrinkArraysin interfaceMatrixSparse
-
growMaxLength
public void growMaxLength(int arrayLength, boolean preserveValue)Increases the maximum size of the data array so that it can store sparse data up to 'length'. The class parameter nz_length is not modified by this function call.- Parameters:
arrayLength- Desired maximum length of sparse datapreserveValue- If true the old values will be copied into the new arrays. If false that step will be skipped.
-
growMaxColumns
public void growMaxColumns(int desiredColumns, boolean preserveValue)Increases the maximum number of columns in the matrix.- Parameters:
desiredColumns- Desired number of columns.preserveValue- If the array needs to be expanded should it copy the previous values?
-
histogramToStructure
public void histogramToStructure(int[] histogram)
Given the histogram of columns compute the col_idx for the matrix. nz_length is automatically set and nz_values will grow if needed.- Parameters:
histogram- histogram of column values in the sparse matrix. modified, see above.
-
sortIndices
public void sortIndices(SortCoupledArray_F64 sorter)
Sorts the row indices in ascending order.- Parameters:
sorter- (Optional) Used to sort rows. If null a new instance will be declared internally.
-
copyStructure
public void copyStructure(DMatrixSparseCSC orig)
Copies the non-zero structure of orig into "this"- Parameters:
orig- Matrix who's structure is to be copied
-
isIndicesSorted
public boolean isIndicesSorted()
If the indices has been sorted or not- Returns:
- true if sorted or false if not sorted
-
isFull
public boolean isFull()
Returns true if number of non-zero elements is the maximum size- Returns:
- true if no more non-zero elements can be added
-
getType
public MatrixType getType()
Description copied from interface:MatrixReturns the type of matrix
-
createCoordinateIterator
public java.util.Iterator<DMatrixSparse.CoordinateRealValue> createCoordinateIterator()
Description copied from interface:DMatrixSparseCreates an iterator which will go through each non-zero value in the sparse matrix. Order is not defined and is implementation specific- Specified by:
createCoordinateIteratorin interfaceDMatrixSparse- Returns:
- Iterator
-
-