samplingrate=500; lowend=.1; highend=10; Wn=[lowend highend]/(samplingrate/2); % This avoids the piece of code which is generating slightly different % coefficients between the two versions of MATLAB. [z,p,k]=butter(8,Wn); [SOS,G] = zp2sos(z,p,k); [b,a] = sos2tf(SOS,G);
Butterworth filters have a magnitude response that is maximally flat in the passband and monotonic overall. This smoothness comes at the price of decreased rolloff steepness. Elliptic and Chebyshev filters generally provide steeper rolloff for a given filter order.
butter uses a five-step algorithm:
-
It finds the lowpass analog prototype poles, zeros, and gain using the function
buttap. -
It converts the poles, zeros, and gain into state-space form.
-
If required, it uses a state-space transformation to convert the lowpass filter into a bandpass, highpass, or bandstop filter with the desired frequency constraints.
-
For digital filter design, it uses
bilinearto convert the analog filter into a digital filter through a bilinear transformation with frequency prewarping. Careful frequency adjustment enables the analog filters and the digital filters to have the same frequency response magnitude atWnor atw1andw2. -
It converts the state-space filter back to its transfer function or zero-pole-gain form, as required.