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 算法

MIT 许可证

17KB
329 代码行

Build Status

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