我正在开发一个使用中心差异的项目,这意味着我需要在每次迭代中使用上一个、当前和下一个值。使用
nalgebra
这很简单,只需调用 .windows(3)
并映射值,如下所示:
y.windows(3).map(|window_vals| window_vals[0] - 2.0 * window_vals[1] + window_vals[2])
但是,不幸的是,我需要使用这个中心差分方法作为
impl
的 ode_solver
块的一部分(对于那些熟悉这个箱子的人来说,这是 system
方法)不幸的是这个库的特征要求意味着我需要使用 nalgebra
matrix
来代替,它似乎没有类似的方法。请让我知道在使用 nalgebra
矩阵而不是 ndarray
数组 时复制上述代码片段的最佳选择是什么
as_slice
或 as_mut_slice
获取 Matrix
的切片视图,然后对该切片使用标准 windows
方法:
y.as_slice().windows(3).map(|window_vals| window_vals[0] - 2.0 * window_vals[1] + window_vals[2])