#fft #ndarray #rustfft #realfft #rustdct

ndrustfft

多维FFT,实数到复数的FFT和实数到实数的DCT

10个版本

新版本 0.5.0 2024年8月18日
0.4.5 2024年6月27日
0.4.4 2024年4月17日
0.4.2 2023年10月28日
0.1.4 2021年7月30日

#51数学

Download history 478/week @ 2024-04-28 485/week @ 2024-05-05 747/week @ 2024-05-12 548/week @ 2024-05-19 390/week @ 2024-05-26 528/week @ 2024-06-02 470/week @ 2024-06-09 766/week @ 2024-06-16 633/week @ 2024-06-23 501/week @ 2024-06-30 486/week @ 2024-07-07 299/week @ 2024-07-14 407/week @ 2024-07-21 372/week @ 2024-07-28 2511/week @ 2024-08-04 2719/week @ 2024-08-11

6,027 每月下载量
4 crates 中使用

MIT 许可证

52KB
905

ndrustfft

ndrustfft: n-维复数到复数的FFT,实数到复数的FFT和实数到实数的DCT

该库是对RustFFT、RustDCT和RealFft的包装,可以在ndarray上进行复数和实数值数据的FFT和DCT运算。

ndrustfft提供了FFT和DCT的Handler结构体,必须与数组一起传递给相应的函数(见下文)。Handlers实现了一个过程函数,该函数是Rustfft的过程的包装。沿最外层轴的变换通常是最快的,而沿其他轴的变换将暂时复制输入数组。

并行

该库包含所有函数的并行版本,这些版本利用了ndarray crate的并行迭代器。

可用的变换

复数到复数

实数到复数

复数到实数

实数到实数

  • dct1nddct1nddct1_par
  • dct2nddct2nddct2_par
  • dct3:[nddct3](https://docs.rs/ndrustfft/latest/ndrustfft/?search=nddct3 "nddct3"), [nddct3_par](https://docs.rs/ndrustfft/latest/ndrustfft/?search=nddct3_par "nddct3_par")
  • dct4:[nddct4](https://docs.rs/ndrustfft/latest/ndrustfft/?search=nddct4 "nddct4"), [nddct4_par](https://docs.rs/ndrustfft/latest/ndrustfft/?search=nddct4_par "nddct4_par")

示例

沿第一轴的二维实数到复数的fft

use ndarray::{Array2, Dim, Ix};
use ndrustfft::{ndfft_r2c, Complex, R2cFftHandler};

let (nx, ny) = (6, 4);
let mut data = Array2::<f64>::zeros((nx, ny));
let mut vhat = Array2::<Complex<f64>>::zeros((nx / 2 + 1, ny));
for (i, v) in data.iter_mut().enumerate() {
    *v = i as f64;
}
let mut fft_handler = R2cFftHandler::<f64>::new(nx);
ndfft_r2c(
    &data.view(),
    &mut vhat.view_mut(),
    &mut fft_handler,
    0,
);

归一化

RustFFTRustDCTRealFft不进行归一化,而此库默认应用scipy的归一化。这意味着,逆fft除以data.len()的因子,而dct乘以二。可以通过使用归一化构建器从默认归一化切换到无归一化,或应用自定义归一化。

见:examples/fft_norm

特性

  • 并行:启用使用ndarrays + rayon的并行转换(默认启用)
  • avx:启用rustfft的avx功能(默认启用)
  • sse:启用rustfft的sse功能(默认启用)
  • neon:启用rustfft的neon功能(默认启用)

文档

docs.rs

版本

变更日志

许可证:MIT

依赖项

~4.5MB
~88K SLoC