/** * Digital Filters Implementation * * Provides: * - Low-pass filter * - High-pass filter * - Band-pass filter * - Band-stop (notch) filter * - Butterworth filter * - Moving average (for smoothing) * - Savitzky-Golay filter */ export type FilterType = 'lowpass' | 'highpass' | 'bandpass' | 'bandstop'; export interface FilterOptions { /** Cutoff frequency in Hz (or normalized 0-1) */ cutoff: number; /** Second cutoff for bandpass/bandstop filters */ cutoffHigh?: number; /** Sample rate in Hz (default: 1.0 for normalized) */ sampleRate?: number; /** Filter order (default: 2) */ order?: number; } export interface ButterworthOptions extends FilterOptions { /** Filter type */ type: FilterType; } export interface SingleFrequencyFilterOptions { /** Frequency to remove in Hz */ frequency: number; /** Sampling rate in Hz */ sampleRate: number; /** Bandwidth of the notch in Hz (default: 1.0) */ bandwidth?: number; } /** * Apply a simple low-pass FIR filter */ export declare function lowPassFilter(data: Float32Array | Float64Array, cutoffHz: number, sampleRate: number, order?: number): Float32Array; /** * Apply a simple high-pass FIR filter */ export declare function highPassFilter(data: Float32Array | Float64Array, cutoffHz: number, sampleRate: number, order?: number): Float32Array; /** * Apply a band-pass FIR filter */ export declare function bandPassFilter(data: Float32Array | Float64Array, lowCutoffHz: number, highCutoffHz: number, sampleRate: number, order?: number): Float32Array; /** * Apply a band-stop (notch) FIR filter */ export declare function bandStopFilter(data: Float32Array | Float64Array, lowCutoffHz: number, highCutoffHz: number, sampleRate: number, order?: number): Float32Array; /** * Apply Butterworth filter (IIR) */ export declare function butterworth(data: Float32Array | Float64Array, options: ButterworthOptions): Float32Array; /** * Apply a single frequency notch filter to remove periodic noise. * Implementing a 2nd order IIR notch filter. */ export declare function singleFrequencyFilter(data: Float32Array | Float64Array, options: SingleFrequencyFilterOptions): Float32Array; /** * Exponential moving average filter */ export declare function exponentialMovingAverage(data: Float32Array | Float64Array, alpha?: number): Float32Array; /** * Gaussian smoothing filter */ export declare function gaussianSmooth(data: Float32Array | Float64Array, sigma?: number): Float32Array; /** * Savitzky-Golay smoothing filter */ export declare function savitzkyGolay(data: Float32Array | Float64Array, windowSize?: number, polynomialOrder?: number): Float32Array; /** * Median filter (good for spike removal) */ export declare function medianFilter(data: Float32Array | Float64Array, windowSize?: number): Float32Array;