#filter #iir #forms #signal-processing #direct #digital #order

无 std biquad

这是一个用于数字二阶IIR滤波器的库,也称为双二次滤波器

7 个不稳定版本

0.4.2 2022年1月14日
0.4.1 2021年4月22日
0.4.0 2021年1月16日
0.3.1 2020年4月10日
0.1.0 2018年7月24日

#501 in 嵌入式开发

Download history 477/week @ 2024-03-13 635/week @ 2024-03-20 618/week @ 2024-03-27 1080/week @ 2024-04-03 574/week @ 2024-04-10 674/week @ 2024-04-17 874/week @ 2024-04-24 929/week @ 2024-05-01 739/week @ 2024-05-08 908/week @ 2024-05-15 831/week @ 2024-05-22 494/week @ 2024-05-29 462/week @ 2024-06-05 510/week @ 2024-06-12 437/week @ 2024-06-19 677/week @ 2024-06-26

每月2,158次下载
用于 7 crate

MIT/Apache

40KB
873

biquad

Build Status

biquad 是一个 #![no_std] 库,用于创建基于 双二次滤波器 的信号处理一阶和二阶IIR滤波器。该库提供了直接形式1 (DF1) 和直接形式2转置 (DF2T) 的实现,其中DF1在需要在线重新调谐滤波器时更适用,因为它具有在重新调谐时引入最小失真的特性,而DF2T最适合用于静态滤波器,因为它具有最低的计算复杂度和最佳的数值稳定性。

该crate实现了针对 f32f64 的双二次滤波器。

示例

fn main() {
    use biquad::*;

    // Cutoff and sampling frequencies
    let f0 = 10.hz();
    let fs = 1.khz();

    // Create coefficients for the biquads
    let coeffs = Coefficients::<f32>::from_params(Type::LowPass, fs, f0, Q_BUTTERWORTH_F32).unwrap();

    // Create two different biquads
    let mut biquad1 = DirectForm1::<f32>::new(coeffs);
    let mut biquad2 = DirectForm2Transposed::<f32>::new(coeffs);

    let input_vec = vec![0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0];
    let mut output_vec1 = Vec::new();
    let mut output_vec2 = Vec::new();

    // Run for all the inputs
    for elem in input_vec {
        output_vec1.push(biquad1.run(elem));
        output_vec2.push(biquad2.run(elem));
    }
}

文档

许可证

根据您的选择,许可协议为

贡献

除非您明确声明,否则您有意提交给作品以包含的任何贡献,根据Apache-2.0许可证的定义,将按照上述方式双重许可,没有任何附加条款或条件。

依赖关系

~435KB