Hello there, I have a question regarding the CMSIS DSP library function arm_fir_decimate_X.
So for example if I have an ADC which is sampling at 5250 kHz and I want to create a filter using the decimate function, do I have to run the sampled signal through a low pass filter first in order to use the decimate function? The reason why I am asking is because on the description it says "When decimating by a factor of M, the signal should be prefiltered by a lowpass filter with a normalized cutoff frequency of 1/M in order to prevent aliasing distortion. The user of the function is responsible for providing the filter coefficients."
M
1/M
So if I don't missunderstand it, for example I have an ADC which has a sampling rate of 5250 kHz and I want to decimate that signal down by M = 10, I will have to run the signal through a lowpass filter with the cut-off frequency of 525 kHz first before I put it into the decimator function which I then use to filter a for example a 60kHz signal?
That sounds like the intention. Though if you already know all your input is much lower frequency than 525 kHz then maybe you don't need to filter.
Hi pethead,
Referring to CMSIS-DSP documentation:
In the Description section the term "decimator" applies only to the ↓M block. On the other hand, the functions such as arm_fir_decimate_f32, arm_fir_decimate_fast_q15, etc. implement whole of the block diagram → FIR → ↓M → (both the FIR filter and the decimator).
In some literature the term decimation means digital lowpass prefiltering and downsampling (whole of the block diagram in CMSIS-DSP FIR Decimator documentation).
There is no need for a separate lowpass digital filter because the FIR Decimator functions have it built-in, you only have to provide the filter coefficients.
If your original sampling rate is 5250 kHz and you decimate by a factor of 10, the cut-off frequency of the lowpass filter should be ≤ 262.5 kHz.
As stated in the description, the purpose of the FIR Decimator functions is for reducing the sample rate of a signal without introducing aliasing distortion. You do not use the functions for the sole purpose of filtering.
Regards,
Goodwin
If we already know that the input does not have frequency components above half the new sampling frequency: