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?
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