diff options
author | Clyne Sullivan <clyne@bitgloo.com> | 2020-12-19 17:39:51 -0500 |
---|---|---|
committer | Clyne Sullivan <clyne@bitgloo.com> | 2020-12-19 17:39:51 -0500 |
commit | 3ee38d2e7459f2a3a7097343053be5ec2081c0d1 (patch) | |
tree | 5dc93d772b2899d3ba53da9d352faeb9181ffa91 /gui/demos/2_iir_echo.cpp | |
parent | 6395d1d18b2fe0ece82f3b82c35648b0419378c2 (diff) |
added presented demo files
Diffstat (limited to 'gui/demos/2_iir_echo.cpp')
-rw-r--r-- | gui/demos/2_iir_echo.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gui/demos/2_iir_echo.cpp b/gui/demos/2_iir_echo.cpp new file mode 100644 index 0000000..0bd7e9d --- /dev/null +++ b/gui/demos/2_iir_echo.cpp @@ -0,0 +1,22 @@ +adcsample_t *process_data(adcsample_t *samples, unsigned int size) +{ + constexpr float alpha = 0.7; + constexpr unsigned int D = 2000; + + static adcsample_t output[SIZE]; + static adcsample_t prev[D]; // prev[0] = output[0 - D] + + // Do calculations with previous output + for (unsigned int i = 0; i < D; i++) + output[i] = samples[i] + alpha * (prev[i] - 2048); + + // Do calculations with current samples + for (unsigned int i = D; i < size; i++) + output[i] = samples[i] + alpha * (output[i - D] - 2048); + + // Save outputs for next computation + for (unsigned int i = 0; i < D; i++) + prev[i] = output[size - (D - i)]; + + return output; +} |