- class sdr.MovingAverager(sdr.FIR)
Implements a moving average FIR filter.
Notes
A discrete-time moving average with length \(L\) is an FIR filter with impulse response
\[h[n] = \frac{1}{L}, \quad 0 \le n \le L - 1 .\]Examples
Create an FIR moving average filter and an IIR leaky integrator filter.
In [1]: fir = sdr.MovingAverager(30) In [2]: iir = sdr.LeakyIntegrator(1 - 2 / 30)
Compare the step responses.
In [3]: plt.figure(); \ ...: sdr.plot.step_response(fir, N=100, label="Moving Averager"); \ ...: sdr.plot.step_response(iir, N=100, label="Leaky Integrator"); ...:
Compare the magnitude responses.
In [4]: plt.figure(); \ ...: sdr.plot.magnitude_response(fir, label="Moving Averager"); \ ...: sdr.plot.magnitude_response(iir, label="Leaky Integrator"); \ ...: plt.ylim(-35, 5); ...:
Compare the output of the two filters to a Gaussian random process.
In [5]: x = np.random.randn(1_000) + 2.0; \ ...: y_fir = fir(x); \ ...: y_iir = iir(x) ...: In [6]: plt.figure(); \ ...: sdr.plot.time_domain(y_fir, label="Moving Averager"); \ ...: sdr.plot.time_domain(y_iir, label="Leaky Integrator"); ...:
Constructors¶
-
MovingAverager(length: int, streaming: bool =
False
) Creates a moving average FIR filter.
Special methods¶
Streaming mode only¶
- reset()
Resets the filter state. Only useful when using streaming mode.
- flush() NDArray
Flushes the filter state by passing zeros through the filter. Only useful when using streaming mode.
- property state : NDArray
The filter state consisting of the previous \(N\) inputs.
Methods¶
-
impulse_response(N: int | None =
None
) NDArray Returns the impulse response \(h[n]\) of the FIR filter.
-
step_response(N: int | None =
None
) NDArray Returns the step response \(s[n]\) of the FIR filter.
- frequency_response(...) tuple[ndarray[Any, dtype[float64]], ndarray[Any, dtype[complex128]]]
- frequency_response(freqs: float, ...) complex
- frequency_response(freqs, ...) ndarray[Any, dtype[complex128]]
Returns the frequency response \(H(\omega)\) of the FIR filter.
- group_delay(...) tuple[NDArray, NDArray]
Returns the group delay \(\tau_g(\omega)\) of the FIR filter.
- phase_delay(...) tuple[NDArray, NDArray]
Returns the phase delay \(\tau_{\phi}(\omega)\) of the FIR filter.
-
noise_bandwidth(sample_rate: float =
1.0
) float Returns the noise bandwidth \(B_n\) of the FIR filter.
Properties¶
- property taps : NDArray
The feedforward taps \(h[n]\) with length \(N + 1\).
-
MovingAverager(length: int, streaming: bool =