#filter #iir #biquad

iir_filters

A Rust 对 scipy 中一些数字滤波器的重新实现

4 个版本

0.1.3 2023年10月16日
0.1.2 2022年8月22日
0.1.1 2022年8月20日
0.1.0 2022年8月19日

#1 in #iir

Apache-2.0 许可证

1.5MB
2K SLoC

iir_filters

A Rust 对 scipy 中一些数字滤波器的重新实现。

示例

use iir_filters::filter_design::FilterType;
use iir_filters::filter_design::butter;
use iir_filters::sos::zpk2sos;
use iir_filters::filter::DirectForm2Transposed;
use iir_filters::filter::Filter;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let order = 5;
    let cutoff_low = 1.0;
    let cutoff_hi= 10.0;
    let fs = 81.0;

    let zpk = butter(order, FilterType::BandPass(cutoff_low, cutoff_hi),fs)?;
    let sos = zpk2sos(&zpk, None)?;

    let mut dft2 = DirectForm2Transposed::new(&sos);
    
    let input:Vec<f64>  = vec![1.0, 2.0, 3.0];
    let mut output:Vec<f64> = vec![];
    
    for x in input.iter() {
        output.push( dft2.filter(*x) );
    }
    
    return Ok( () );
}

参见:scipy.signal: butter()

⚠️ 目前它只实现了巴特沃斯滤波器,因为这是我唯一感兴趣的。

依赖项