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 |
|
#51 在 数学
6,027 每月下载量
在 4 crates 中使用
52KB
905 行
ndrustfft
ndrustfft: n-维复数到复数的FFT,实数到复数的FFT和实数到实数的DCT
该库是对RustFFT、RustDCT和RealFft的包装,可以在ndarray上进行复数和实数值数据的FFT和DCT运算。
ndrustfft提供了FFT和DCT的Handler结构体,必须与数组一起传递给相应的函数(见下文)。Handlers实现了一个过程函数,该函数是Rustfft的过程的包装。沿最外层轴的变换通常是最快的,而沿其他轴的变换将暂时复制输入数组。
并行
该库包含所有函数的并行版本,这些版本利用了ndarray crate的并行迭代器。
可用的变换
复数到复数
fft
:ndfft
,ndfft_par
ifft
:ndifft
,ndifft_par
实数到复数
fft_r2c
:ndfft_r2c
,ndfft_r2c_par
,
复数到实数
ifft_r2c
:ndifft_r2c
,ndifft_r2c_par
实数到实数
dct1
:nddct1
,nddct1_par
dct2
:nddct2
,nddct2_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,
);
归一化
RustFFT
,RustDCT
和RealFft
不进行归一化,而此库默认应用scipy的归一化。这意味着,逆fft除以data.len()
的因子,而dct乘以二。可以通过使用归一化构建器从默认归一化切换到无归一化,或应用自定义归一化。
见:examples/fft_norm
特性
- 并行:启用使用
ndarrays
+rayon
的并行转换(默认启用) - avx:启用
rustfft
的avx功能(默认启用) - sse:启用
rustfft
的sse功能(默认启用) - neon:启用
rustfft
的neon功能(默认启用)
文档
版本
许可证:MIT
依赖项
~4.5MB
~88K SLoC