I have an FIR filter on an ADC that samples at 120Hz that I feed into a control loop that runs at 10Hz. What would be better from a noise perspecitve:

Option 1: Just run the FIR and downsample ever 12th point to get 10Hz

Option 2: Run the FIR and average the last 12 points to get 10Hz

This is assuming gaussian noise for the input


For option 2, you could describe the system as a cascade of your FIR filter, a moving average filter and a decimator (taking one of every 12 moving average filter outputs). The FIR filter and the moving average filter could be combined together into an equivalent filter whose impulse response is the convolution of the FIR filter impulse response and that of the moving average filter. So option 1 and option 2 are quite similar in that they both correspond to some filter followed by a decimation by 12.

If you've designed and optimized your FIR filter to meet your specifications (including choices over various parameters including noise performance, resource usage, bandwidth, etc.) then the extra moving average filter would just go against that optimization (for example by reducing the effective bandwith, increasing resource usage, etc.) So from that perspective option 2 would be at best wasteful (or even harmful with respect to meeting your specifications) and option 1 would be the better option.

That said, given the same FIR filter in both option 1 and 2, and provided that that filter's design has enough margin against the specifications to accommodate the cascade with the extra moving average filter without causing the cascade to go out of specifications, the extra filtering is likely to remove more noise (so in that case option 2 would be the better option, even though that isn't exactly a fair comparison from a resource usage perspective).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.