6个版本 (3个重大更新)
新 0.4.3 | 2024年8月21日 |
---|---|
0.4.2 | 2024年3月12日 |
0.3.0 | 2023年12月18日 |
0.2.0 | 2023年12月7日 |
0.1.0 | 2023年11月22日 |
在科学分类中排名第62
每月下载量196
在flaw中使用
105KB
1.5K SLoC
InterpN
多维插值/外推方法,与no-std和no-alloc兼容,优先考虑正确性、性能和与内存受限环境的兼容性。
性能缩放
注意,对于自洽的多维线性插值,有2^ndims个网格值贡献于每个观测点,因此这是性能缩放的理论下限。话虽如此,根据实现,常数项可以变化超过一个数量级。
三次插值需要每个维度多两个自由度,这导致最小运行时间缩放为4^ndims。与线性方法类似,根据实现,常数项可以变化超过数量级,RAM的使用也可以。
矩形单位方法执行二分查找以找到相关的网格单元,这需要log2(网格元素数量)的最坏情况迭代次数。
方法 | RAM | 插值/外推成本 |
---|---|---|
multilinear::regular | O(ndims) | O(2^ndims) |
multilinear::rectilinear | O(ndims) | O(2^ndims) + log2(gridsize) |
multicubic::regular | O(ndims) | O(4^ndims) |
multicubic::rectilinear | O(ndims) | O(4^ndims) + log2(gridsize) |
示例:具有规则网格的线性插值和多项式插值
use interpn::{multilinear, multicubic};
// Define a grid
let x = [1.0_f64, 2.0, 3.0, 4.0];
let y = [0.0_f64, 1.0, 2.0, 3.0];
// Grid input for rectilinear method
let grids = &[&x[..], &y[..]];
// Grid input for regular grid method
let dims = [x.len(), y.len()];
let starts = [x[0], y[0]];
let steps = [x[1] - x[0], y[1] - y[0]];
// Values at grid points
let z = [2.0; 16];
// Observation points to interpolate/extrapolate
let xobs = [0.0_f64, 5.0];
let yobs = [-1.0, 3.0];
let obs = [&xobs[..], &yobs[..]];
// Storage for output
let mut out = [0.0; 2];
// Do interpolation
multilinear::regular::interpn(&dims, &starts, &steps, &z, &obs, &mut out);
multicubic::regular::interpn(&dims, &starts, &steps, &z, false, &obs, &mut out);
示例:具有矩形单位网格的线性插值和多项式插值
use interpn::{multilinear, multicubic};
// Define a grid
let x = [1.0_f64, 2.0, 3.0, 4.0];
let y = [0.0_f64, 1.0, 2.0, 3.0];
// Grid input for rectilinear method
let grids = &[&x[..], &y[..]];
// Values at grid points
let z = [2.0; 16];
// Points to interpolate/extrapolate
let xobs = [0.0_f64, 5.0];
let yobs = [-1.0, 3.0];
let obs = [&xobs[..], &yobs[..]];
// Storage for output
let mut out = [0.0; 2];
// Do interpolation
multilinear::rectilinear::interpn(grids, &z, &obs, &mut out).unwrap();
multicubic::rectilinear::interpn(grids, &z, false, &obs, &mut out).unwrap();
开发路线图
- 无结构三角形和四面体网格的方法
许可
根据您的选择,许可为以下之一
- Apache License,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
依赖项
~475–670KB
~13K SLoC