Description
The current moving average filter implementation could be enhanced by adding support for binomial filtering as an additional mode. Binomial filtering is preserving signal features compared to simple moving averages.
Benefits of binomial filtering:
- Better preservation of signal shape compared to simple moving average
- No phase shift (symmetric filter)
Technical Considerations
- Need to handle edge cases at the start/end of the waveform
- Consider optimal buffer sizes for variable window lengths
- Computationally efficient implementation possible using Pascal's triangle, coefficients causing just a few extra multiplications I guess
- When implemented properly we will get a kernel-smoother framework.
Kontext
This year, I came into possession of a Pico 3000 that offers a quit good sampling rate of up to 1 GS/s. However, I find that the limitation to 8 vertical bits does present a challenge. It might be beneficial to consider implementing proper averaging, which has the potential to enhance voltage resolution, albeit at the expense of temporal resolution. Given the scope's relatively modest bandwidth of 70 MHz, I believe this will be a reasonable trade-off in such cases.
Hey, I'd love to send through a pull request! But before I do, it'd be great if you could let me know if you're interested in such a contribution, or if there are any extra things/hints/warnings I should consider before I get going.