#range #dsp #normal #normalized

normal_map

一个将值范围映射到归一化范围[0.0, 1.0]的结构体

5个版本

0.2.1 2020年9月21日
0.2.0 2020年9月21日
0.1.2 2020年9月21日
0.1.1 2020年9月19日
0.1.0 2020年9月19日

#940 in 编码

MIT 许可证

73KB
1.5K SLoC

归一化范围映射器

Test Documentation Crates.io License

一个Rust辅助工具,使用各种梯度将值范围映射到归一化范围[0.0, 1.0],适用于DSP应用。

(目前处于beta版)

梯度类型

  • LinearMap - 线性映射。可以使用泛型或分贝单位。
  • PowerMap - 指数映射,将归一化值提升到提供的指数。可以使用泛型或分贝单位。
  • Log2Map - 使用log2的对数映射。这对于频率(Hz)值很有用。
  • Discrete - 离散的isize整数映射。也可以使用实现了以下特征的枚举:From<isize> + Into<isize> + Copy + Clone。此映射器具有将值转换为浮点值或isize/enum值的转换方法。

安装

在您的Cargo.toml中添加normal_map作为依赖项

normal_map = 0.2

示例

// Import normal mappers that use internal f32 values.
// (f64 is available as well)
use normal_map::f32::*;

// Linear mapper
let lin_map = LinearMap::new(-50.0, 50.0, Unit::Generic);

assert!((lin_map.normalize(25.0) - 0.75).abs() <= 0.0001);
assert!((lin_map.denormalize(0.25) - (-25.0)).abs() <= 0.0001);

// Efficiently map an array/slice of values.
let in_normals = [0.0f32, 1.0, 0.25, -0.25];
let mut out_values = [0.0f32; 4];
lin_map.denormalize_array(&in_normals, &mut out_values);

// Generic type for any mapper
let normal_map = NormalMap::discrete::<isize>(-5, 5);

assert!((normal_map.normalize(3 as f32) - 0.8).abs() <= 0.0001);

无运行时依赖