4个版本 (1个稳定版本)
新 1.0.0 | 2024年8月24日 |
---|---|
0.3.0 | 2024年8月24日 |
0.2.0 | 2024年6月30日 |
0.1.0 | 2024年6月29日 |
#291 in 数学
56KB
1.5K SLoC
kneed
这是一个纯Rust实现的膝盖点检测。
这里的代码旨在与kneed实现1:1匹配。
用法
通用用法
// Provide your x: Vec<f64> and y: Vec<f64>
let x = [1.0, 2.0, 3.0];
let y = [10.0, 20.0, 30.0];
let params = KneeLocatorParams::new(
ValidCurve::Concave,
ValidDirection::Increasing,
InterpMethod::Interp1d,
);
// Instantiate KneeLocator
let kl = KneeLocator::new(x.to_vec(), y.to_vec(), 1.0, params);
// After instantiation, you can invoke the following:
// kl.knee
// kl.knee_y
// kl.norm_knee
// kl.norm_knee_y
// kl.elbow()
// kl.norm_elbow()
// kl.elbow_y()
// kl.norm_elbow_y()
// kl.all_elbows()
// kl.all_norm_elbows()
// kl.all_elbows_y()
// kl.all_norm_elbows_y()
来自论文的示例
let (x, y) = DataGenerator::figure2();
let params = KneeLocatorParams::new(
ValidCurve::Concave,
ValidDirection::Increasing,
InterpMethod::Interp1d,
);
let kneedle = KneeLocator::new(x.to_vec(), y.to_vec(), 1.0, params);
assert_relative_eq!(0.222222222222222, kneedle.knee.unwrap());
assert_relative_eq!(1.8965517241379306, kneedle.knee_y.unwrap());
致谢
对于Python实现的所有贡献归功于Kevin Arvai。
依赖关系
~3.5MB
~76K SLoC