[][src]Struct sprs::TriMatBase

pub struct TriMatBase<IStorage, DStorage> { /* fields omitted */ }

Sparse matrix in the triplet format.

Sparse matrices in the triplet format use three arrays of equal sizes (accessible through the methods row_inds, col_inds, data), the first one storing the row indices of non-zero values, the second storing the corresponding column indices and the last array storing the corresponding scalar value. If a non-zero location is repeated in the arrays, the non-zero value is taken as the sum of the corresponding scalar entries.

This format is useful for iteratively building a sparse matrix, since the various non-zero entries can be specified in any order, or even partially as is common in physics with partial derivatives equations.

This format cannot be used for arithmetic operations. Arithmetic operations are more efficient in the compressed format. A matrix in the triplet format can be converted to the compressed format using the methods to_csc and to_csr.

The TriMatBase type is parameterized by the storage type for the row and column indices, IStorage, and by the storage type for the non-zero values DStorage. Convenient aliases are availaible to specify frequent variant: TriMat refers to a triplet matrix owning the storage of its indices and and values, TriMatView refers to a triplet matrix with slices to store its indices and values, while TriMatViewMut refers to a a triplet matrix using mutable slices.

Additionaly, the type aliases TriMatI, TriMatViewI and TriMatViewMutI can be used to choose an index type different from the default usize.

Methods

impl<N, I: SpIndex> TriMatBase<Vec<I>, Vec<N>>[src]

pub fn new(shape: (usize, usize)) -> TriMatI<N, I>[src]

Create a new triplet matrix of shape (nb_rows, nb_cols)

pub fn with_capacity(shape: (usize, usize), cap: usize) -> TriMatI<N, I>[src]

Create a new triplet matrix of shape (nb_rows, nb_cols), and pre-allocate cap elements on the backing storage

pub fn from_triplets(
    shape: (usize, usize),
    row_inds: Vec<I>,
    col_inds: Vec<I>,
    data: Vec<N>
) -> TriMatI<N, I>
[src]

Create a triplet matrix from its raw components. All arrays should have the same length.

Panics

  • if the arrays don't have the same length
  • if either the row or column indices are out of bounds.

pub fn add_triplet(&mut self, row: usize, col: usize, val: N)[src]

Append a non-zero triplet to this matrix.

pub fn reserve(&mut self, cap: usize)[src]

Reserve cap additional non-zeros

pub fn reserve_exact(&mut self, cap: usize)[src]

Reserve exactly cap non-zeros

impl<N, I: SpIndex, IStorage, DStorage> TriMatBase<IStorage, DStorage> where
    IStorage: Deref<Target = [I]>,
    DStorage: Deref<Target = [N]>, 
[src]

pub fn rows(&self) -> usize[src]

The number of rows of the matrix

pub fn cols(&self) -> usize[src]

The number of cols of the matrix

pub fn shape(&self) -> (usize, usize)[src]

The shape of the matrix, as a (rows, cols) tuple

pub fn nnz(&self) -> usize[src]

The number of non-zero entries

pub fn row_inds(&self) -> &[I][src]

The non-zero row indices

pub fn col_inds(&self) -> &[I][src]

The non-zero column indices

pub fn data(&self) -> &[N][src]

The non-zero values

pub fn find_locations(&self, row: usize, col: usize) -> Vec<TripletIndex>[src]

Find all non-zero entries at the location given by row and col

pub fn transpose_view(&self) -> TriMatViewI<N, I>[src]

Get a transposed view of this matrix

Important traits for TriMatIter<RI, CI, DI>
pub fn triplet_iter(&self) -> TriMatIter<Iter<I>, Iter<I>, Iter<N>>[src]

Get an iterator over non-zero elements stored by this matrix

pub fn to_csc(&self) -> CsMatI<N, I> where
    N: Clone + Num
[src]

Create a CSC matrix from this triplet matrix

pub fn to_csr(&self) -> CsMatI<N, I> where
    N: Clone + Num
[src]

Create a CSR matrix from this triplet matrix

pub fn view(&self) -> TriMatViewI<N, I>[src]

impl<'a, N, I: SpIndex> TriMatBase<&'a [I], &'a [N]>[src]

Important traits for TriMatIter<RI, CI, DI>
pub fn triplet_iter_rbr(
    &self
) -> TriMatIter<Iter<'a, I>, Iter<'a, I>, Iter<'a, N>>
[src]

Get an iterator over non-zero elements stored by this matrix

Reborrowing version of triplet_iter().

impl<N, I: SpIndex, IStorage, DStorage> TriMatBase<IStorage, DStorage> where
    IStorage: DerefMut<Target = [I]>,
    DStorage: DerefMut<Target = [N]>, 
[src]

pub fn set_triplet(
    &mut self,
    TripletIndex: TripletIndex,
    row: usize,
    col: usize,
    val: N
)
[src]

Replace a non-zero value at the given index. Indices can be obtained using find_locations.

pub fn view_mut(&mut self) -> TriMatViewMutI<N, I>[src]

Trait Implementations

impl<N, I, IS, DS> SparseMat for TriMatBase<IS, DS> where
    I: SpIndex,
    IS: Deref<Target = [I]>,
    DS: Deref<Target = [N]>, 
[src]

impl<'a, N, I, IS, DS> SparseMat for &'a TriMatBase<IS, DS> where
    I: 'a + SpIndex,
    N: 'a,
    IS: Deref<Target = [I]>,
    DS: Deref<Target = [N]>, 
[src]

impl<IStorage: PartialEq, DStorage: PartialEq> PartialEq<TriMatBase<IStorage, DStorage>> for TriMatBase<IStorage, DStorage>[src]

impl<'a, N, I, IS, DS> IntoIterator for &'a TriMatBase<IS, DS> where
    I: 'a + SpIndex,
    N: 'a,
    IS: Deref<Target = [I]>,
    DS: Deref<Target = [N]>, 
[src]

type Item = (&'a N, (I, I))

The type of the elements being iterated over.

type IntoIter = TriMatIter<Iter<'a, I>, Iter<'a, I>, Iter<'a, N>>

Which kind of iterator are we turning this into?

impl<IStorage: Debug, DStorage: Debug> Debug for TriMatBase<IStorage, DStorage>[src]

Auto Trait Implementations

impl<IStorage, DStorage> Send for TriMatBase<IStorage, DStorage> where
    DStorage: Send,
    IStorage: Send

impl<IStorage, DStorage> Sync for TriMatBase<IStorage, DStorage> where
    DStorage: Sync,
    IStorage: Sync

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<SS, SP> SupersetOf for SP where
    SS: SubsetOf<SP>, 
[src]