# IIR bandpass filter with very low corner frequencies

I'm trying to get in the MATLAB Signal Processing Toolbox a bandpass IIR filter having the following specifications: pass-band [0.1-0.5] Hz and stop-band attenuation 30 dB. I'm using the following command: [fdata,DigFilt] = bandpass(data, [0.1,0.5], fs, 'ImpulseResponse', 'iir', 'StopbandAttenuation', 30); The sampling frequency fs is 860 Hz. The command info(DigFilt) says that

IIR Digital Filter (real)

Number of Sections : 5 Stable : Yes Linear Phase : No

Design Method Information Design Algorithm : Elliptic

Design Options Match Exactly : both

Design Specifications Sample Rate : 860 Hz Response : Bandpass Specification : Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2 Passband Ripple : 0.1 dB First Stopband Edge : 84.3 mHz Second Stopband Atten. : 30 dB Second Stopband Edge : 67.9315 Hz Second Passband Edge : 500 mHz First Passband Edge : 100 mHz First Stopband Atten. : 30 dB

The very strange parameter is Second Stopband Edge = 67.9315 Hz that seems to me too high considering the high corner frequency of 0.5 Hz. In fact, when i plot the frequency response with fvtool(DigFilt) i get the following

where i see that at 67.9315 Hz the attenuation is far below 30 dB. A zoom of the pass-band is the following

With this image, the first stop-band edge seems to be 57 mHz (and not 84.3 mHz as indicated by the command info) and the second stop-band edge seems to be 577 mHz. Why is there such disagreement between the images and the output of the command info ? Is it caused by the very low corner frequencies? Thanks to all.

• Looks like your frequency grid for plotting is not dense enough. You can clearly see the individual frequency points and they look about 50m Hz apart. Aug 6, 2020 at 13:13
• Thanks, i will try a denser grid Aug 25, 2020 at 21:29