0
$\begingroup$

I have a problem in that I am resampling a signal and loosing amplitude. The steps I do are the following, in c++:

  1. Upsample/interpolate signal by 16x by padding with zeros.
  2. Run an IIR Bessel 2nd order low pass filter with cutoff frequency of downsampler.
  3. Downsample/decimate the signal by 13x (I take every 208th data point to achieve this).

The problem I am having is that I get a large amplitude loss after running the Bessel filter and lots of ringing. If I change the cutoff frequency of the filter to match the new sampling rate of the upsampler then I get a clean signal, as I wanted, but I still get the large loss in amplitude. I am loosing around 13x to 23x in intensity. I figure the zero padding is reducing the signal a lot. I'm really stuck on this and haven't done this type of processing before so any help is appreciated.

$\endgroup$
  • $\begingroup$ awalls answer below is correct and to add to that, everything you described is done properly and as expected (the zero insert x16 would have a loss of 16). Just do not be tempted to add the gain AFTER the filter, that would be a mistake (will degrade SNR). You should tighten the filter as you did so that you do get the clean signal (otherwise you are seeing one of the interpolated images still in the output of your filter. Design to reject the interpolator and that same filter will be more than adequate for your decimation image rejection. $\endgroup$ – Dan Boschen Mar 31 '17 at 21:39
  • $\begingroup$ @DanBoschen: Yes, thank you. I did add the 16x gain to the signal before applying the Bessel filter and everything looks good. $\endgroup$ – user2205930 Mar 31 '17 at 23:58
3
$\begingroup$

Try adding a gain of 16 before your low pass filter, or equivalently using a low pass filter with a passband gain of 16 instead of 1.

$\endgroup$
  • $\begingroup$ Thank you! Adding a gain of 16x (added before applying the Bessel filter) solved my issue. When looking at the literature it wasn't obvious to me that this was needed but I must have skipped past it unknowingly. $\endgroup$ – user2205930 Mar 31 '17 at 23:57

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.