gspx 0.1.2

Sparse graph signal processing and spectral graph wavelets in Rust
Documentation
#![allow(dead_code)]

use ndarray::Array2;
use sprs::TriMat;

pub fn path_laplacian(n: usize) -> sprs::CsMat<f64> {
    let mut tri = TriMat::<f64>::new((n, n));
    for i in 0..n {
        if i > 0 {
            tri.add_triplet(i, i - 1, -1.0);
            tri.add_triplet(i, i, 1.0);
        }
        if i + 1 < n {
            tri.add_triplet(i, i + 1, -1.0);
            tri.add_triplet(i, i, 1.0);
        }
    }
    tri.to_csc()
}

pub fn random_signal(n_rows: usize, n_cols: usize) -> Array2<f64> {
    let mut out = Array2::<f64>::zeros((n_rows, n_cols));
    for r in 0..n_rows {
        for c in 0..n_cols {
            out[[r, c]] = (((r * 31 + c * 17 + 13) % 97) as f64) / 97.0 - 0.5;
        }
    }
    out
}