Skip to main content

Crate embedded_dsp

Crate embedded_dsp 

Source
Expand description

§embedded-dsp

A #![no_std] Rust digital signal processing library for microcontrollers, embedded systems, and real-time signal processing applications.

§Overview

embedded-dsp provides zero-allocation digital signal processing algorithms:

  • Basic Math: Elementwise addition, subtraction, multiplication, dot product, scale, shift, clip, logic ops.
  • Complex Math: Complex vector addition, multiplication, magnitude, magnitude squared, conjugate, dot product.
  • Fast Math: Trigonometric (sin, cos, atan2), square root, division, log, exp.
  • Statistics: Mean, variance, standard deviation, RMS, power, min/max, entropy, Kullback-Leibler, LogSumExp.
  • Support: Vector copy, fill, type conversions (Q7, Q15, Q31, F32), sort, barycenter, weighted sum.
  • Matrix: Matrix addition, subtraction, multiplication, scale, transpose, Gauss-Jordan inverse.
  • Filtering: FIR, Biquad IIR Direct Form I, LMS adaptive filters, Convolution, Correlation, single-pole recursive filters, and O(1) recursive moving average.
  • Filter Design: Biquad Lowpass, Highpass, Bandpass, Notch, Peaking EQ, Allpass, Butterworth, Chebyshev, and arbitrary-response (frequency-sampling) design.
  • Filter Analysis: Frequency response (DTFT) evaluation for FIR/biquad filters, FIR group delay, and pole-based IIR stability checks.
  • Resampling & Multi-rate: CIC Decimator & Interpolator, linear fractional resampler.
  • Kalman Filtering: 1D/2D helpers, const-generic linear KalmanFilter<N, M>, and trait-based ExtendedKalmanFilter (EKF).
  • Const Generics: Compile-time fixed-size FirFilter<N>, BiquadCascade<N>, and Matrix<R, C>.
  • Transform: In-place Complex FFT (CFFT), Real FFT (RFFT), DCT-IV, Bit reversal, Fixed-point FFT (Q15/Q31), Haar transform, Hartley transform, and a generalized wavelet transform (Daubechies-4).
  • Companding: µ-law and A-law audio companding (ITU-T G.711 family).
  • Audio & TinyML: Goertzel single-frequency detector, peak/RMS envelope followers, Mel filterbank, and MFCC feature extraction.
  • Spectral Analysis & PSD: Welch’s method power spectral density estimation (averaged periodograms), single-segment periodograms in linear and dB scale.
  • Spatial & 2D Signal Processing: 2D DCT/IDCT, 2D Convolution, 2D Non-linear Filtering (Min/Max/Median), Sobel edge detection, 2D Histogram, MSE, PSNR.
  • Controller: PID motor controller, Clarke transform, Park transform, Inverse Clarke/Park.
  • Interpolation: Linear, Bilinear, Cubic spline interpolation.
  • Quaternion: Norm, normalization, product, conjugate, inverse, rotation matrix conversion.
  • Window: Hanning, Hamming, Blackman, Blackman-Harris, Bartlett, Welch, Flat-top window generators.
  • Distance: Euclidean, Cosine, Chebyshev, Manhattan, Minkowski, Jaccard, Hamming, Canberra, Bray-Curtis.

Re-exports§

pub use audio::*;
pub use basic_math::*;
pub use companding::*;
pub use complex_math::*;
pub use const_generics::*;
pub use controller::*;
pub use distance::*;
pub use fast_math::*;
pub use filter_analysis::*;
pub use filter_design::*;
pub use filtering::*;
pub use interpolation::*;
pub use kalman::*;
pub use math::*;
pub use matrix::*;
pub use psd::*;
pub use quaternion::*;
pub use resampling::*;
pub use spatial::*;
pub use statistics::*;
pub use support::*;
pub use transform::*;
pub use types::*;
pub use window::*;

Modules§

audio
Audio & TinyML feature extraction: the Goertzel single-frequency detector, peak/RMS envelope followers, a Mel filterbank, and MFCC feature extraction — the standard preprocessing pipeline for embedded speech/audio keyword-spotting and TinyML models.
basic_math
Basic math operations (absolute value, addition, subtraction, multiplication, dot product, negation, offset, scale, shift, clip, logic ops).
companding
Audio companding: the non-linear µ-law and “A”-law compression curves used by the ITU-T G.711 telephony standard to compress a wide-dynamic-range linear audio sample down to a lower bit depth with minimal perceptual loss (Steven W. Smith, “The Scientist and Engineer’s Guide to DSP”, Ch. 22, Eq. 22-1 / 22-2).
complex_math
const_generics
Const generic safe wrappers for compile-time sized FIR filters, Biquads, and Matrices.
controller
Controller functions (PID motor control, Clarke transform, Park transform, Inverse Clarke, Inverse Park).
distance
Distance metrics between vectors (Euclidean, Cosine, Chebyshev, Manhattan, Minkowski, Jaccard, Hamming, Canberra, Bray-Curtis).
fast_math
Fast math functions (sin, cos, sin_cos, sqrt, vsqrt, divide, log, exp, atan2).
filter_analysis
Frequency-response, group-delay, and pole-based stability analysis for filters produced by crate::filter_design or hand-written FIR/biquad coefficients.
filter_design
Filter design routines for calculating biquad IIR coefficients (Low-pass, High-pass, Band-pass, Notch, Peaking, All-pass, Butterworth).
filtering
Digital filtering functions (FIR, Biquad IIR Direct Form I & II, LMS Adaptive Filter, Convolution, Correlation).
interpolation
Interpolation functions (Linear, Bilinear, Spline).
kalman
Kalman filtering and state estimation algorithms for zero-allocation embedded applications.
math
Unified math abstraction providing floating-point mathematical operations using libm in no_std environments or std math when available.
matrix
Matrix operations (addition, subtraction, multiplication, scale, transpose, inverse, complex matrix multiplication).
psd
Power Spectral Density (PSD) estimation using Welch’s Method (Averaged Overlapped Periodogram) and Bartlett/standard periodograms.
quaternion
Quaternion math functions (norm, normalize, product, conjugate, inverse, rotation matrix conversion).
resampling
Multi-rate digital signal processing routines: Cascaded Integrator-Comb (CIC) decimation/interpolation and linear fractional resampling.
spatial
2D Spatial and Image Processing routines (2D DCT/IDCT, 2D Convolution, 2D Nonlinear Filters, Sobel Edge Detection, 2D Histogram, MSE/PSNR).
statistics
Statistics functions (mean, variance, standard deviation, RMS, power, min, max, absmax, absmin, entropy, Kullback-Leibler, LogSumExp).
support
Support functions (copy, fill, format conversions q7/q15/q31/f32, sort, barycenter, weighted sum).
transform
Fast Fourier Transform (FFT), Real FFT (RFFT), Discrete Cosine Transform (DCT-IV), and Bit Reversal functions.
types
Data types, status codes, complex structures, and fixed-point helper types.
window
Window functions (Hanning, Hamming, Blackman, Blackman-Harris, Bartlett, Welch, Flat-top window generators).