import scipy.signal as sig
from splane import pzmap, grpDelay, bodePlot
def analyze_sys( all_sys, all_legends ):
cant_sys = len(all_legends);
fig_hdl = 1
axes_hdl = ()
for ii in range(cant_sys):
fig_hdl, axes_hdl = bodePlot(all_sys[ii], fig_hdl, axes_hdl)
fig_hdl = 2
pzmap(all_sys, fig_hdl)
fig_hdl = 3
for ii in range(cant_sys):
fig_hdl = grpDelay(all_sys[ii], fig_hdl)
aprox_name = 'Bessel'
ripple = 0.5
attenuation = 40
orders2analyze = range(2,7)
all_sys = []
for ii in orders2analyze:
if aprox_name == 'Butterworth':
z,p,k = sig.buttap(ii)
elif aprox_name == 'Chebyshev1':
z,p,k = sig.cheb1ap(ii, ripple)
elif aprox_name == 'Chebyshev2':
z,p,k = sig.cheb2ap(ii, ripple)
elif aprox_name == 'Bessel':
z,p,k = sig.besselap(ii, norm='mag')
elif aprox_name == 'Cauer':
z,p,k = sig.ellipap(ii, ripple, attenuation)
num, den = sig.zpk2tf(z,p,k)
all_sys.append(sig.TransferFunction(num,den))
analyze_sys( all_sys, orders2analyze )