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.

Algorithm modules are Cargo-feature gated (all enabled by the full feature, which is in default). types and math are always available. See the crate’s [features] table for the per-module flags.

§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.
  • Fixed-Point (Q16.16): Saturating Q16.16 arithmetic and scanline interpolation (fixed-point feature).
  • LUT trigonometry: Compile-time 256-entry sin/cos tables (lut feature).
  • 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 and transposed DF-II (f32/q15/q31), LMS / leaky LMS / NLMS, Convolution, Correlation, single-pole recursive filters (f32/q15), Q15 DC blocker, 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>, FirFilterQ15<N>, BiquadCascade<N>, BiquadCascadeQ15, and Matrix<R, C>.
  • Transform: In-place Complex FFT (CFFT), packed Real FFT / inverse (rfft_q15/irfft_q15), 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 curves plus ITU-T G.711 u8 encode/decode.
  • Audio: Goertzel single-frequency detector (f32/q15), peak/RMS envelope followers (f32/q15), 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/Park (f32 and q15).
  • 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 generators (f32), plus Q15 Hanning/Hamming/Blackman/Bartlett.
  • 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 fixed_point::*;
pub use interpolation::*;
pub use kalman::*;
pub use lut::*;
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 window::*;
pub use math::*;
pub use types::*;

Modules§

audio
Audio analysis: the Goertzel single-frequency detector, peak/RMS envelope followers, a Mel filterbank, and MFCC feature extraction. These are DSP front-ends (e.g. for a keyword-spotting pipeline); classifiers and neural nets live in embedded-nn.
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).
fixed_point
Q16.16 fixed-point math.
interpolation
Interpolation functions (Linear, Bilinear, Spline).
kalman
Kalman filtering and state estimation algorithms for zero-allocation embedded applications.
lut
Lookup-table trigonometry.
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).