#dsp #卷积 #信号 #fft #intended #滤波器 #应用

convolution-dsp

1维卷积库,旨在在DSP应用中使用

2个不稳定版本

0.2.0 2024年8月7日
0.1.0 2024年7月10日

620数学

Download history 123/week @ 2024-07-08 127/week @ 2024-08-05

每月下载 132

MIT 许可证

485KB
190 代码行

convolution-dsp

Rust的1维卷积库,旨在在DSP应用中使用。使用重叠加FFT方法。

计划功能

  • 输入信号
    • ☑ Complex32信号
    • ☐ f32信号
  • 滤波器核
    • ☑ f32滤波器核
    • ☐ Complex32滤波器核
  • ☐ 当信号和核都是f32时使用realfft
  • ☐ 支持f64
  • ☐ 当非FFT卷积更快时回退到非FFT卷积
  • ☑ 完整或相同长度输出模式,类似于numpy/scipy
  • ☐ 线程
  • ☐ 最小化内存分配
  • ☐ 比numpy/scipy更快
  • ☐ 重新导出num_complex?

参考文献

Stephen W. Smith, Ph.D., 《科学家和工程师的数字信号处理指南》,第18章。


lib.rs:

use convolution_dsp::{ConvMode, Conv1dPlanner};
use num_complex::Complex32;

let filter = vec![0., 0., 0., 1., 0., 0., 0.];

let planner = Conv1dPlanner::new();
let mut conv = planner.plan_conv1d(&filter, ConvMode::Same);

let signal = vec![Complex32::ONE; 1_000_000];

let output = conv.process(signal);

assert_eq!(output.len(), 1_000_000);

依赖项

~3MB
~57K SLoC