scirs2_fft/sparse_fft/
mod.rs

1//! Sparse Fast Fourier Transform Implementation
2//!
3//! This module provides implementations of Sparse FFT algorithms, which are
4//! efficient for signals that have a sparse representation in the frequency domain.
5//! These algorithms can achieve sub-linear runtime when the signal has only a few
6//! significant frequency components.
7//!
8//! # Module Organization
9//!
10//! * [`config`] - Configuration types and enums for sparse FFT
11//! * [`algorithms`] - Core sparse FFT algorithm implementations
12//! * [`windowing`] - Window function utilities
13//! * [`estimation`] - Sparsity estimation methods
14//! * [`reconstruction`] - Spectrum reconstruction utilities
15//!
16//! # Examples
17//!
18//! ```rust
19//! use scirs2_fft::sparse_fft::{sparse_fft, SparseFFTConfig, SparsityEstimationMethod};
20//!
21//! // Create a sparse signal
22//! let signal = vec![1.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.25, 0.0];
23//!
24//! // Compute sparse FFT with 4 components
25//! let result = sparse_fft(&signal, 4, None, None).unwrap();
26//!
27//! println!("Found {} sparse components", result.values.len());
28//! ```
29
30pub mod algorithms;
31pub mod config;
32pub mod estimation;
33pub mod reconstruction;
34pub mod windowing;
35
36#[cfg(test)]
37mod tests;
38
39// Re-export main types and functions for backward compatibility
40pub use algorithms::{SparseFFT, SparseFFTResult};
41pub use config::{SparseFFTAlgorithm, SparseFFTConfig, SparsityEstimationMethod, WindowFunction};
42
43// Re-export main public API functions
44pub use algorithms::{
45    adaptive_sparse_fft, frequency_pruning_sparse_fft, sparse_fft, sparse_fft2, sparse_fftn,
46    spectral_flatness_sparse_fft,
47};
48pub use reconstruction::{
49    reconstruct_filtered, reconstruct_high_resolution, reconstruct_spectrum,
50    reconstruct_time_domain,
51};
52
53// Re-export utilities
54pub use config::try_as_complex;