I'm applying the next bandpass filter to the data of an impulse response coming from .wav; it fades data below 10 Hz and above 400 Hz:

d = fdesign.bandpass('N,Fst1,Fp1,Fp2,Fst2,C',...
d.Stopband1Constrained = true;
d.Astop1 = 60;
d.Stopband2Constrained = true;
d.Astop2 = 60;

Hd = design(d,'equiripple');    % Passband type
h = fvtool(Hd);    % Filter design plot

Whose plot is: enter image description here

Original signal vs. filtered signal looks like this: enter image description here

Resulting signal is pretty much different from original, so I took a look into frequency domain: enter image description here

As you can see, magnitude order is notoriously smaller in the bottom plot than the top one in this second plot. Considering the first picture, at least for around 200 Hz resulting amplitude might be almost equal to the original one but it doesn't happen (regardless of the amplitude increase after 300 Hz).

Is something missing in my design that causes this differences? Do I have to do any normalization to get an amplitude after filtering similar to the original one? Using 117 as filter's order is the best option to minimize fading. Thank you in advance for you help.


1 Answer 1


Note that you are cutting a lot of signal frequencies in the transition from 10Hz to 200Hz (look the attenuation in the frequency response of the filter), consider to use lowpass filter or to change filter prototype to someone with faster transition. By cut definition each frequency that is attenuated more than -3dB is cut.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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