3个版本
0.0.3 | 2023年10月22日 |
---|---|
0.0.2 | 2023年1月17日 |
0.0.1 | 2023年1月6日 |
在压缩类别中排名291
27KB
597 行
downsample
用于对固定频率或基于时间的指标进行下采样以进行长期存储的no-std库。
假设您有一个每秒可以进行100次测量的温度传感器,并将数据存储在f32
中。您想跟踪一些历史样本,比如去年的,但您不需要像原始数据那样以100Hz的频率存储它们,因为365 * 24 * 60 * 60 * 100 * 4字节 = 12GB数据量太大。
另外,它将提供一个基于时间的下采样器,您可以在没有固定大小但有固定间隔的级别中存储数据。基于时间的下采样尚未实现。
用法
use downsample::FixedFrequencyBuilder;
use rand::Rng;
fn main() {
// 0s - 1s : 100Hz
// 1s - 1m : 1Hz
// 1m - 1h : 1/60 Hz
// 1h - 1d : 1/3600 Hz
let mut temperature_measurements = FixedFrequencyBuilder::new(100, 100)
.level(59, 100)
.level(59, 60)
.level(23, 60)
.build();
for _ in 0..1000 {
temperature_measurements.push(rng.gen::<f32>());
}
}
限制
- 对象创建时必须知道桶的大小。
- 只能允许作为下采样因子的整数。例如,100Hz -> 25Hz -> 5Hz可以通过因子4和5实现,但不能通过因子2.5实现,因为2.5不是整数。
早期发布版本
这个crate的版本是0.0.x
,这意味着api会快速变化,特性会发生变化,还没有什么几乎是稳定的。