2个不稳定版本
新 0.2.0 | 2024年8月7日 |
---|---|
0.1.0 | 2024年7月10日 |
620 在 数学
每月下载 132 次
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