Crate scirs2_fft

Source
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).