#filter #gaussian #kernel #dsp

no-std gaussfilt

为1D数据设计和应用高斯滤波器

4个版本

0.1.3 2023年4月4日
0.1.2 2023年3月27日
0.1.1 2023年3月27日
0.1.0 2023年3月27日

#1297 in 数学

Download history · Rust 包仓库 47/week @ 2024-03-11 · Rust 包仓库 9/week @ 2024-03-18 · Rust 包仓库 2/week @ 2024-03-25 · Rust 包仓库 24/week @ 2024-04-01 · Rust 包仓库 23/week @ 2024-04-08 · Rust 包仓库 24/week @ 2024-04-15 · Rust 包仓库 26/week @ 2024-04-22 · Rust 包仓库 262/week @ 2024-04-29 · Rust 包仓库 278/week @ 2024-05-06 · Rust 包仓库 121/week @ 2024-05-13 · Rust 包仓库 267/week @ 2024-05-20 · Rust 包仓库 30/week @ 2024-05-27 · Rust 包仓库 23/week @ 2024-06-03 · Rust 包仓库 50/week @ 2024-06-10 · Rust 包仓库 32/week @ 2024-06-17 · Rust 包仓库 101/week @ 2024-06-24 · Rust 包仓库

每月下载量:207
2个crates中使用(通过sci-rs

MIT/Apache

17KB
301

高斯滤波:gaussfilt

gaussfilt是一个no_std库,提供高斯滤波器设计和应用。可以通过已知的sigma或已知的截止频率和采样率来设计滤波器。支持0到3的阶数。

内核设计需要分配,接口在num_traits: Float上是通用的,因此有选择“std”或“libm”支持的crate功能。

这里有一些提供的签名

  • design_gaussian_filter1d(sigma,order,truncate) -> alloc::Vec<F>
  • design_gaussian_sigma_for_cutoff(cutoff,sample_rate) ->F
  • apply_gaussian_filter(signal: Iterator<F>,kernel: &[F],pad: bool) -> Iterator<F>

示例用法

选择一个期望的截止频率,设计一个滤波器,对一些数据进行滤波

use gaussfilt::*;
let signal = (0..1000).map(|x| x as f32);
let sigma = design_gaussian_sigma_for_cutoff(10., 100.0);
let filter = design_gaussian_filter1d(sigma, 0, 4.0);
let filtered = apply_gaussian_filter1d(signal, &filter, true);
let data = filtered.collect();

依赖项

~215KB