#![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
}