from scipy.optimize import * from Linear_Audio_Lib import * def fun(x): global prototype,fo,A,Q,f,fs Poles = -fo*x[0]*roots([1.,1./(A*x[1]*Q*x[2]),1.]) Zeros = -fo*x[0]*roots([1.,A*x[1]/(Q*x[2]),1.]) return ptp(prototype-dB(Fz_at_f(Poles,Zeros,f,fs))) global prototype,fo,A,Q,f,fs A = 10**(5./40) Q = .5 fs = 48000. fo = 10000. start = 1000. stop = 12000. Poles = -fo*roots([1.,1./(A*Q),1.]) Zeros = -fo*roots([1.,A/Q,1.]) flog = linspace(log10(start), log10(stop), 100) f = 10.0 ** flog prototype = dB(Fs_at_f(Poles,Zeros,f)) ranges =((.8,1.2),(.8,1.2),(.8,1.2)) print 'Poles = ',Poles,'\n','Zeros = ',Zeros,'\n' output = brute(fun,ranges,Ns = 10) Poles = -fo*output[0]*roots([1.,1./(A*output[1]*Q*output[2]),1.]) Zeros = -fo*output[0]*roots([1.,A*output[1]/(Q*output[2]),1.]) abz = z_coeff(Poles,Zeros,fs,40*log10(A),fo) print 'Poles = ',Poles,'\n','Zeros = ',Zeros,'\n' print 'a coefficients = ',abz[0],'\n','b coefficients = ',abz[1],'\n'