#signal #time-series #z-score #peak-detection #dispersion

smoothed_z_score

平滑z分数算法(非常鲁棒的阈值算法)

1 个不稳定版本

使用旧的Rust 2015

0.1.3 2017年11月10日

算法 中排名 #1613

每月下载量 21

MIT 许可证

7KB
102

平滑z分数峰值检测器

描述

Rust对平滑z分数算法的实现。

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
smoothed_z_score = "0.1"

并将其添加到您的crate根目录

extern crate smoothed_z_score;

示例用法

考虑以下数据集(来自原始stackoverflow回复)

sample dataset

    use smoothed_z_score::{Peak, PeaksDetector, PeaksFilter};

    fn main() {
        let input = vec![
            1.0, 1.0, 1.1, 1.0, 0.9, 1.0, 1.0, 1.1, 1.0, 0.9, 1.0, 1.1, 1.0, 1.0, 0.9, 1.0, 1.0, 1.1, 1.0,
            1.0, 1.0, 1.0, 1.1, 0.9, 1.0, 1.1, 1.0, 1.0, 0.9, 1.0, 1.1, 1.0, 1.0, 1.1, 1.0, 0.8, 0.9, 1.0,
            1.2, 0.9, 1.0, 1.0, 1.1, 1.2, 1.0, 1.5, 1.0, 3.0, 2.0, 5.0, 3.0, 2.0, 1.0, 1.0, 1.0, 0.9, 1.0,
            1.0, 3.0, 2.6, 4.0, 3.0, 3.2, 2.0, 1.0, 1.0, 0.8, 4.0, 4.0, 2.0, 2.5, 1.0, 1.0, 1.0
        ];
        let output: Vec<_> = input
            .into_iter()
            .enumerate()
            .peaks(PeaksDetector::new(30, 5.0, 0.0), |e| e.1)
            .map(|((i, _), p)| (i, p))
            .collect();
        assert_eq!(output, vec![
            (45, Peak::High), (47, Peak::High), (48, Peak::High), (49, Peak::High),
            (50, Peak::High), (51, Peak::High), (58, Peak::High), (59, Peak::High),
            (60, Peak::High), (61, Peak::High), (62, Peak::High), (63, Peak::High),
            (67, Peak::High), (68, Peak::High), (69, Peak::High), (70, Peak::High),
        ]);
    }

无运行时依赖项