Expand description
Fast Fourier Transform module
This module provides implementations of various Fast Fourier Transform algorithms,
following SciPy
’s fft
module.
§Overview
- Fast Fourier Transform (FFT) and inverse FFT for 1D, 2D, and N-dimensional arrays
- Real-to-complex and complex-to-real FFT optimized for real-valued data
- Discrete cosine transform (DCT) types I-IV and their inverses
- Discrete sine transform (DST) types I-IV and their inverses
- Fractional Fourier Transform (FrFT) for rotations in the time-frequency plane
- Non-Uniform Fast Fourier Transform (NUFFT) for non-uniformly sampled data
- Spectrogram and Short-Time Fourier Transform (STFT) for time-frequency analysis
- Waterfall plots for 3D visualization of time-frequency data
- Window functions for signal processing (Hann, Hamming, Blackman, etc.)
- Helper functions for frequency domain calculations and visualization
§Implementation Notes
- Built on
rustfft
for efficient computation - Provides proper zero padding and array reshaping
- Normalization options for compatibility with
SciPy
- Support for ndarrays through ndarray integration
§Examples
use scirs2_fft::{fft, ifft};
use num_complex::Complex64;
// Generate a simple signal
let signal = vec![1.0, 2.0, 3.0, 4.0];
// Compute FFT of the signal
let spectrum = fft(&signal, None).unwrap();
// Inverse FFT should recover the original signal
let recovered = ifft(&spectrum, None).unwrap();
// Check that the recovered signal matches the original
for (x, y) in signal.iter().zip(recovered.iter()) {
assert!((x - y.re).abs() < 1e-10);
assert!(y.im.abs() < 1e-10);
}
Re-exports§
pub use error::FFTError;
pub use error::FFTResult;
pub use dct::dct;
pub use dct::dct2;
pub use dct::dctn;
pub use dct::idct;
pub use dct::idct2;
pub use dct::idctn;
pub use dct::DCTType;
pub use dst::dst;
pub use dst::dst2;
pub use dst::dstn;
pub use dst::idst;
pub use dst::idst2;
pub use dst::idstn;
pub use dst::DSTType;
pub use fft::fft;
pub use fft::fft2;
pub use fft::fftn;
pub use fft::ifft;
pub use fft::ifft2;
pub use fft::ifftn;
pub use fft::fft2_parallel;
pub use rfft::irfft;
pub use rfft::irfft2;
pub use rfft::irfftn;
pub use rfft::rfft;
pub use rfft::rfft2;
pub use rfft::rfftn;
pub use helper::fftfreq;
pub use helper::fftshift;
pub use helper::ifftshift;
pub use helper::rfftfreq;
pub use frft::frft;
pub use frft::frft_complex;
pub use spectrogram::spectrogram;
pub use spectrogram::spectrogram_normalized;
pub use spectrogram::stft as spectrogram_stft;
pub use waterfall::apply_colormap;
pub use waterfall::waterfall_3d;
pub use waterfall::waterfall_lines;
pub use waterfall::waterfall_mesh;
pub use waterfall::waterfall_mesh_colored;
pub use memory_efficient::fft2_efficient;
pub use memory_efficient::fft_inplace;
pub use memory_efficient::fft_streaming;
pub use memory_efficient::process_in_chunks;
pub use memory_efficient::FftMode;
pub use window::apply_window;
pub use window::get_window;
pub use window::Window;
Modules§
- dct
- Discrete Cosine Transform (DCT) module
- dst
- Discrete Sine Transform (DST) module
- error
- Error types for the
SciRS2
FFT module - fft
- Fast Fourier Transform (FFT) module
- frft
- Fractional Fourier Transform module
- helper
- Helper functions for the FFT module
- memory_
efficient - Memory-efficient FFT operations
- nufft
- Non-Uniform Fast Fourier Transform module
- rfft
- Real-valued Fast Fourier Transform (RFFT) module
- spectrogram
- Spectrogram module for time-frequency analysis
- waterfall
- Waterfall plot module for time-frequency analysis visualization
- window
- Window functions for signal processing
Functions§
- fft_
bounds - Returns the minimum and maximum values for each FFT dimension.
- hilbert
- Performs the Hilbert transform.
- stft
- Performs a Short-Time Fourier Transform (STFT).