For those interested, here are some functions to compute Butterworth and Chebyshev order and coefficients I wrote a few years ago:
function n = butt_order(f_pass, f_stop, att_pass_dB, att_stop_dB)
att_pass = 10^(att_pass_dB/10);
att_stop = 10^(att_stop_dB/10);
N = (att_stop-1)/(att_pass-1);
D = (f_stop/f_pass);
n = ceil(log(N)/(2*log(D)));
end
function g = butt_coeffs(N)
k = 1:N;
g = (2*sin((2.*k-1).*pi/(2.*N)));
end
function n = cheb1_order(wp, ws, ap, as)
n = ceil(acosh(sqrt(10^(as/10)-1)/(10^(ap/10)-1))/(acosh(ws/wp)));
end
function [g] = cheb1_coeffs(N, apass)
B = log(coth(apass/(40*log10(exp(1)))));
Y = sinh(B./(2.*N));
k = 1:N;
b = Y.^2 + (sin(k.*pi/N)).^2;
a = sin((2.*k-1).*pi/(2.*N));
g = ones(1, N);
for k = 1:N
if(k == 1)
g(k) = (2.*a(k))/Y;
else
g(k) = (4.*a(k).*a(k-1))./(b(k-1).*g(k-1));
end
end
if(~mod(N,2))
g(N+1) = (coth(B./4)).^2;
end
end
LP to BP/HP/SP transformations are know and can be easily implemented.
I have used many times for passive filters.
These were taken from Valkenburg "Analog Filters" book, Blinchikoff &Zverev "Filtering in Time and Frequency Domain", and Matthaei, Young and Jones "Microwave Filters, Impedance Matching Networks, and Coupling Structures" books.
Cheers,
g.