11 个版本 (2 个稳定)
使用旧的 Rust 2015
2.0.0 | 2017 年 1 月 13 日 |
---|---|
1.0.0 | 2015 年 12 月 22 日 |
0.0.9 | 2015 年 12 月 4 日 |
0.0.8 | 2015 年 9 月 25 日 |
0.0.1 | 2015 年 3 月 21 日 |
#1558 in 算法
17KB
329 代码行
summed_area_table
使用 Rust 实现的累积区域表泛型
你可以在维基百科上找到更多关于累积区域表的信息。
http://en.wikipedia.org/wiki/Summed_area_table
基本用法
为你的 cargo.toml 准备依赖项
[dependencies]
summed-area-table = "*"
nalgebra = "0.4.0" // this is not needed if you don't want to use nalgebra::DMat
导入所需内容。
use nalgebra::{DMat}; // this is not needed if you don't want to use nalgebra::DMat
use summed_area_table::{SummedAreaTableSource, SummedAreaTable};
为填充有 10x10 矩阵的累积区域表创建。
let src: DMat<usize> = DMat::new_ones(10,10);
let table = src.calculate_full_summed_area_table();
获取特定区域的和
assert_eq!(100.0, table.get_sum((0,0),(9,9)));
assert_eq!(50.0, table.get_sum((0,0),(9,4)));
assert_eq!(25.0, table.get_sum((0,0),(4,4)));
获取特定区域的平均值
assert_eq!(10.0, table.get_average((0,0),(9,9)));
assert_eq!(10.0, table.get_average((0,0),(9,4)));
assert_eq!(10.0, table.get_average((0,0),(4,4)));
自定义数据源
如果你想实现具有 SummedAreaTableSource<T>
方法的自定义类型,你可以为它实现 SummedAreaTableSource<T>
特性。你需要实现 SummedAreaTableSource<T>
特性。 T
需要实现 SourceValue
特性。然而,这个库为所有原始数值类型提供了实现。
以下代码显示了此库如何为 nalgebra::DMat<T>
类型实现 SummedAreaTableSource<T>
。
impl <T: SourceValue>SummedAreaTableSource<T> for DMat<T>{
fn at(&self, x: usize, y: usize) -> &T {
&self[(y,x)]
}
fn height(&self) -> usize {
self.nrows()
}
fn width(&self) -> usize {
self.ncols()
}
}
依赖项
~3MB
~51K SLoC