Skip to main content

Crate scirs2_signal

Crate scirs2_signal 

Source
Expand description

ยงSciRS2 Signal - Digital Signal Processing

scirs2-signal provides comprehensive signal processing capabilities modeled after SciPyโ€™s signal module, offering filtering, spectral analysis, wavelet transforms, system identification, and time-frequency analysis with SIMD acceleration and parallel processing.

ยง๐ŸŽฏ Key Features

  • SciPy Compatibility: Drop-in replacement for scipy.signal functions
  • Digital Filters: FIR, IIR, Butterworth, Chebyshev, elliptic, Bessel
  • Spectral Analysis: FFT-based PSD, spectrograms, Lomb-Scargle periodograms
  • Wavelet Transforms: DWT, CWT, dual-tree complex wavelets, 2D transforms
  • Convolution: Fast 1D/2D convolution with SIMD and parallel support
  • LTI Systems: Transfer functions, state-space, frequency response
  • Advanced Methods: EMD, Hilbert transform, system identification

ยง๐Ÿ“ฆ Module Overview

SciRS2 ModuleSciPy EquivalentDescription
filterscipy.signal.butter, cheby1Digital filter design (FIR/IIR)
convolvescipy.signal.convolve1D/2D convolution and correlation
spectralscipy.signal.periodogramPower spectral density, spectrograms
dwtpywt.dwtDiscrete wavelet transform
waveletspywt.cwtContinuous wavelet transform
windowscipy.signal.get_windowWindow functions (Hann, Hamming, etc.)
ltiscipy.signal.TransferFunctionLTI system representation
lombscarglescipy.signal.lombscargleLomb-Scargle periodogram

ยง๐Ÿš€ Quick Start

[dependencies]
scirs2-signal = "0.1.5"
use scirs2_signal::{convolve, filter, spectral};

// Convolution
let signal = vec![1.0, 2.0, 3.0];
let kernel = vec![0.25, 0.5, 0.25];
let filtered = convolve(&signal, &kernel, "same").expect("operation should succeed");

ยง๐Ÿ”’ Version: 0.2.0 (February 8, 2026)

Re-exportsยง

pub use error::SignalError;
pub use error::SignalResult;
pub use convolve::convolve;
pub use convolve::convolve_simd_ultra;
pub use convolve::correlate;
pub use convolve_parallel::parallel_convolve1d;
pub use convolve_parallel::parallel_convolve_simd_ultra;
pub use measurements::peak_to_peak;
pub use measurements::peak_to_rms;
pub use measurements::rms;
pub use measurements::snr;
pub use measurements::thd;
pub use filter::analyze_filter;
pub use filter::butter;
pub use filter::filtfilt;
pub use filter::firwin;
pub use filter::FilterType;
pub use lti::design_tf;
pub use lti::impulse_response;
pub use lti::lsim;
pub use lti::step_response;
pub use lti::TransferFunction;
pub use spectral::get_window_simd_ultra;
pub use spectral::periodogram;
pub use spectral::spectrogram;
pub use spectral::stft;
pub use spectral::welch;
pub use dwt::dwt_decompose;
pub use dwt::dwt_reconstruct;
pub use dwt::wavedec;
pub use dwt::waverec;
pub use dwt::DecompositionResult;
pub use dwt::Wavelet;
pub use dwt::WaveletFilters;
pub use wavelets::complex_morlet;
pub use wavelets::cwt;
pub use wavelets::morlet;
pub use wavelets::ricker;
pub use wavelets::scalogram;
pub use parametric::ar_spectrum;
pub use parametric::burg_method;
pub use parametric::yule_walker;
pub use parametric_advanced_enhanced::adaptive_ar_spectral_estimation;
pub use parametric_advanced_enhanced::advanced_enhanced_arma;
pub use parametric_advanced_enhanced::high_resolution_spectral_estimation;
pub use parametric_advanced_enhanced::multitaper_parametric_estimation;
pub use parametric_advanced_enhanced::robust_parametric_spectral_estimation;
pub use parametric_advanced_enhanced::AdaptiveARConfig;
pub use parametric_advanced_enhanced::AdvancedEnhancedConfig;
pub use parametric_advanced_enhanced::HighResolutionConfig;
pub use parametric_advanced_enhanced::MultitaperParametricConfig;
pub use parametric_advanced_enhanced::RobustParametricConfig;
pub use swt::iswt;
pub use swt::swt;
pub use swt::swt_decompose_simd_pipelined;
pub use tv::tv_denoise_1d;
pub use tv::tv_denoise_2d;
pub use waveforms::chirp;
pub use waveforms::sawtooth;
pub use waveforms::square;
pub use dwt2d_advanced::denoise_2d;
pub use dwt2d_advanced::dwt2d_decompose;
pub use dwt2d_advanced::dwt2d_reconstruct;
pub use dwt2d_advanced::wavedec2;
pub use dwt2d_advanced::waverec2;
pub use dwt2d_advanced::Dwt2DCoeffs;
pub use dwt2d_advanced::EdgeMode2D;
pub use dwt2d_advanced::MultilevelDwt2D;
pub use wavelet_advanced::advanced_denoise_1d;
pub use wavelet_advanced::block_denoise_1d;
pub use wavelet_advanced::select_best_basis;
pub use wavelet_advanced::BestBasisResult;
pub use wavelet_advanced::CostFunction as WaveletCostFunction;
pub use wavelet_advanced::DenoisingConfig;
pub use wavelet_advanced::ThresholdMode;
pub use wavelet_advanced::ThresholdRule;
pub use wpt_enhanced::best_basis_analysis;
pub use wpt_enhanced::wpt_denoise;
pub use wpt_enhanced::CostFunction as WptCostFunction;
pub use wpt_enhanced::WaveletPacketTree;
pub use wpt_enhanced::WptNode;
pub use wpt_enhanced::WptValidationResult;
pub use advanced_spectral_v2::ar_spectral_estimation;
pub use advanced_spectral_v2::arma_spectral_estimation;
pub use advanced_spectral_v2::memory_optimized_ar_spectral;
pub use advanced_spectral_v2::ARMASpectralConfig;
pub use advanced_spectral_v2::ARMASpectralMethod;
pub use advanced_spectral_v2::ARMASpectralResult;
pub use advanced_spectral_v2::ARSpectralConfig;
pub use advanced_spectral_v2::ARSpectralMethod;
pub use advanced_spectral_v2::ARSpectralResult;
pub use advanced_spectral_v2::MemoryOptimizedSpectralConfig;
pub use advanced_spectral_v2::ParallelSpectralConfigV2;
pub use advanced_spectral_v2::StreamingSpectralEstimator;
pub use parallel_filtering_v2::batch_fir_filter;
pub use parallel_filtering_v2::batch_iir_filter;
pub use parallel_filtering_v2::parallel_fir_filter;
pub use parallel_filtering_v2::parallel_iir_filter;
pub use parallel_filtering_v2::parallel_median_filter;
pub use parallel_filtering_v2::parallel_moving_average;
pub use parallel_filtering_v2::parallel_savgol_filter;
pub use parallel_filtering_v2::BatchFilterConfig;
pub use parallel_filtering_v2::FIRFilterMethod;
pub use parallel_filtering_v2::PaddingMode;
pub use parallel_filtering_v2::ParallelFIRConfig;
pub use parallel_filtering_v2::ParallelIIRConfig;
pub use parallel_filtering_v2::StreamingFIRFilter;
pub use parallel_filtering_v2::StreamingIIRFilter;
pub use spectral_scipy_validation_v2::generate_validation_report;
pub use spectral_scipy_validation_v2::run_comprehensive_validation;
pub use spectral_scipy_validation_v2::ValidationResult;
pub use spectral_scipy_validation_v2::ValidationSuite;
pub use adaptive::AdaptiveFilter;
pub use adaptive::AdaptiveFilterConfig;
pub use adaptive::AdaptiveMethod;
pub use adaptive::ApaFilter;
pub use adaptive::FdlmsFilter;
pub use adaptive::LmfFilter;
pub use adaptive::LmsFilter;
pub use adaptive::NlmsFilter;
pub use adaptive::RlsFilter;
pub use adaptive::SmLmsFilter;
pub use adaptive::VsLmsFilter;
pub use cepstral::complex_cepstrum;
pub use cepstral::compute_deltas;
pub use cepstral::mel_filter_bank;
pub use cepstral::mfcc;
pub use cepstral::mfcc_extract;
pub use cepstral::mfcc_frame;
pub use cepstral::real_cepstrum;
pub use cepstral::MelFilterBankConfig;
pub use cepstral::MfccConfig;
pub use modulation::am_demodulate;
pub use modulation::am_modulate;
pub use modulation::demodulate;
pub use modulation::fm_demodulate;
pub use modulation::fm_modulate;
pub use modulation::modulate;
pub use modulation::qam_constellation;
pub use modulation::qam_demodulate_bits;
pub use modulation::qam_modulate_bits;
pub use modulation::qam_modulate_passband;
pub use modulation::AmMode;
pub use modulation::ModulationMethod;
pub use modulation::QamOrder;
pub use modulation::QamSymbol;
pub use beamforming::beamform;
pub use beamforming::delay_and_sum_filter;
pub use beamforming::delay_and_sum_power;
pub use beamforming::estimate_covariance;
pub use beamforming::estimate_covariance_real;
pub use beamforming::mvdr_power;
pub use beamforming::mvdr_weights;
pub use beamforming::scan_angles_degrees;
pub use beamforming::steering_vector_ula;
pub use beamforming::steering_vectors_ula;
pub use beamforming::BeamformMethod;
pub use system_identification::armax_estimate;
pub use system_identification::arx_estimate;
pub use system_identification::n4sid_estimate;
pub use system_identification::oe_estimate;
pub use system_identification::pem_estimate;
pub use system_identification::rls_batch;
pub use system_identification::ArmaxConfig;
pub use system_identification::ArxConfig;
pub use system_identification::N4sidConfig;
pub use system_identification::OeConfig;
pub use system_identification::PemConfig;
pub use system_identification::RlsConfig;
pub use system_identification::RlsEstimator;
pub use system_identification::SubspaceIdResult;
pub use system_identification::SysIdResult;
pub use tf_analysis::nichols_chart;
pub use tf_analysis::nyquist_diagram;
pub use tf_analysis::pole_zero_analysis;
pub use tf_analysis::root_locus;
pub use tf_analysis::sensitivity_functions;
pub use tf_analysis::stability_margins;
pub use tf_analysis::NicholsResult;
pub use tf_analysis::NyquistResult;
pub use tf_analysis::PoleZeroResult;
pub use tf_analysis::RootLocusResult;
pub use tf_analysis::SensitivityResult;
pub use tf_analysis::StabilityMargins;
pub use state_space_ops::balanced_realization;
pub use state_space_ops::balanced_truncation;
pub use state_space_ops::compute_gramians;
pub use state_space_ops::hankel_norm_reduction;
pub use state_space_ops::minimal_realization;
pub use state_space_ops::ss_feedback;
pub use state_space_ops::ss_parallel;
pub use state_space_ops::ss_series;
pub use state_space_ops::ss_to_tf;
pub use state_space_ops::tf_to_ss_controllable;
pub use state_space_ops::tf_to_ss_observable;
pub use state_space_ops::BalancedRealization;
pub use state_space_ops::GramianResult;
pub use state_space_ops::MinimalRealization;
pub use state_space_ops::ReducedModel;
pub use spectral_advanced::burg_spectral;
pub use spectral_advanced::esprit_spectral;
pub use spectral_advanced::false_alarm_level;
pub use spectral_advanced::false_alarm_probability;
pub use spectral_advanced::lomb_scargle_periodogram;
pub use spectral_advanced::multitaper_ftest_line_detection;
pub use spectral_advanced::multitaper_psd;
pub use spectral_advanced::music_spectral;
pub use spectral_advanced::yule_walker_spectral;
pub use spectral_advanced::BurgConfig;
pub use spectral_advanced::BurgResult;
pub use spectral_advanced::EspritConfig;
pub use spectral_advanced::EspritResult;
pub use spectral_advanced::FTestResult as MultitaperFTestResult;
pub use spectral_advanced::FalseAlarmResult;
pub use spectral_advanced::FapMethod;
pub use spectral_advanced::LombScargleConfig;
pub use spectral_advanced::LombScargleNormalization;
pub use spectral_advanced::LombScargleResult;
pub use spectral_advanced::MultitaperConfig;
pub use spectral_advanced::MultitaperResult;
pub use spectral_advanced::MusicConfig;
pub use spectral_advanced::MusicResult;
pub use spectral_advanced::YuleWalkerConfig;
pub use spectral_advanced::YuleWalkerResult;
pub use multichannel::apply_mixing_matrix;
pub use multichannel::cross_channel_correlation;
pub use multichannel::cross_correlation_lag;
pub use multichannel::csp;
pub use multichannel::csp_apply;
pub use multichannel::fastica;
pub use multichannel::mix_to_mono;
pub use multichannel::mono_to_multichannel;
pub use multichannel::reorder_channels;
pub use multichannel::select_channels;
pub use multichannel::CspConfig;
pub use multichannel::CspResult;
pub use multichannel::FastIcaConfig;
pub use multichannel::FastIcaResult;
pub use multichannel::MixMode;
pub use multichannel::MultiChannelSignal;
pub use time_frequency::choi_williams;
pub use time_frequency::cohens_class;
pub use time_frequency::gaussian_window as tf_gaussian_window;
pub use time_frequency::hann_window as tf_hann_window;
pub use time_frequency::instantaneous_amplitude;
pub use time_frequency::instantaneous_frequency;
pub use time_frequency::kernel_born_jordan;
pub use time_frequency::kernel_wigner_ville;
pub use time_frequency::pseudo_wigner_ville;
pub use time_frequency::reassigned_spectrogram;
pub use time_frequency::smoothed_pseudo_wigner_ville;
pub use time_frequency::wigner_ville;
pub use time_frequency::CohenKernelFn;
pub use time_frequency::ReassignedTfDistribution;
pub use time_frequency::TfDistribution;
pub use signal_quality::crest_factor as signal_crest_factor;
pub use signal_quality::crest_factor_db;
pub use signal_quality::dynamic_range;
pub use signal_quality::enob;
pub use signal_quality::perceptual_quality;
pub use signal_quality::segmental_snr;
pub use signal_quality::si_sdr;
pub use signal_quality::sinad;
pub use signal_quality::snr_blind;
pub use signal_quality::snr_from_noise_floor;
pub use signal_quality::snr_reference;
pub use signal_quality::spectral_flatness;
pub use signal_quality::spectral_flatness_frames;
pub use signal_quality::zero_crossing_rate;
pub use signal_quality::zero_crossing_rate_frames;
pub use signal_quality::BlindSnrConfig;
pub use signal_quality::DynamicRangeResult;
pub use signal_quality::PerceptualQualityResult;
pub use resampling::decimate;
pub use resampling::design_anti_alias_filter;
pub use resampling::downsample;
pub use resampling::fractional_delay;
pub use resampling::interpolate;
pub use resampling::lagrange_delay_filter;
pub use resampling::resample;
pub use resampling::resample_poly;
pub use resampling::resample_to_length;
pub use resampling::sinc_delay_filter;
pub use resampling::upsample;
pub use resampling::ResamplingConfig;
pub use resampling::ResamplingQuality;
pub use resampling::WindowType as ResamplingWindowType;

Modulesยง

adaptive
advanced_spectral_v2
Advanced Spectral Analysis for v0.2.0
beamforming
Beamforming module for array signal processing
cepstral
Cepstral analysis module for signal processing
convolve
convolve_parallel
denoise_enhanced
Enhanced wavelet denoising with advanced thresholding methods
dwt
dwt2d_advanced
Advanced 2D Discrete Wavelet Transform Module
dwt2d_enhanced
Enhanced 2D Discrete Wavelet Transform (DWT) Module
dwt2d_super_refined
Advanced-refined 2D wavelet transforms with memory efficiency and adaptive basis selection
emd
error
filter
hilbert
lombscargle
lombscargle_enhanced
lombscargle_scipy_validation
Comprehensive Lomb-Scargle validation against SciPy reference implementation
lti
measurements
median
memory_optimized
modulation
Modulation and demodulation module for signal processing
multichannel
Multi-channel signal processing
multitaper
parallel_filtering_v2
Enhanced Parallel Filtering Operations for v0.2.0
parallel_spectral
parametric
Parametric spectral estimation methods
parametric_advanced
parametric_advanced_enhanced
Advanced-enhanced parametric spectral estimation with SIMD acceleration
resampling
Signal Resampling
signal_quality
Signal Quality Metrics
simd_advanced
Advanced SIMD-optimized signal processing operations
spectral
Advanced Spectral Analysis Methods
spectral_advanced
Enhanced spectral analysis methods
spectral_scipy_validation_v2
SciPy Comparison Validation Tests for Advanced Spectral Analysis v0.2.0
spline
state_space_ops
State Space Operations
streaming
Real-time / streaming signal processing module.
swt
sysid
system_identification
System Identification Module
tf_analysis
Enhanced Transfer Function Analysis
time_frequency
Time-Frequency Analysis
tv
utils
waveforms
wavelet_advanced
Advanced Wavelet Features Module
wavelets
window
Window Functions for Signal Processing
wpt_enhanced
Enhanced Wavelet Packet Transform Module