diff --git a/applications/lofar2/model/pfb_os/dsp.py b/applications/lofar2/model/pfb_os/dsp.py index feab4c87e0aaa6f529f1c5c91866b4282dc3b977..e3a8a068fbdca7515552d76cb2d967bc3469920f 100644 --- a/applications/lofar2/model/pfb_os/dsp.py +++ b/applications/lofar2/model/pfb_os/dsp.py @@ -339,7 +339,7 @@ def plot_time_response(h, name='', markers=False): plt.grid(True) -def plot_iir_filter_analysis(b, a, fs=1, whole=False, Ntime=100, step=False, show=[]): +def plot_iir_filter_analysis(b, a, fs=1, whole=False, Ntime=100, step=False, log=False, show=[]): """Plot and print iir filter analysis results. Input: @@ -362,21 +362,23 @@ def plot_iir_filter_analysis(b, a, fs=1, whole=False, Ntime=100, step=False, sho z, p, k = dsp_fpga_lib.zplane(b, a, plt_ax=ax1) # uses np.roots(a), np.roots(b) else: z, p, k = dsp_fpga_lib.zplane(b, a) # no plot, only calculate z, p, k - print('Zeros, poles and gain from b, a coefficients:') - if len(z) > 0: - print('. zeros:') - for zero in z: - print(' z = %s' % str(zero)) - if len(p) > 0: - print('. poles:') - for pole in p: - print(' p = %s' % str(pole)) - print('. gain: k = %.3f' % k) - - # Derive b, a coefficients back from z, p, k - print('Coefficients back from z, p, k:') - print(' b = %s' % str(np.poly(z))) - print(' a = %s' % str(np.poly(p) / k)) + + if log: + print('Zeros, poles and gain from b, a coefficients:') + if len(z) > 0: + print('. zeros:') + for zero in z: + print(' z = %s' % str(zero)) + if len(p) > 0: + print('. poles:') + for pole in p: + print(' p = %s' % str(pole)) + print('. gain: k = %.3f' % k) + + # Derive b, a coefficients back from z, p, k + print('Coefficients back from z, p, k:') + print(' b = %s' % str(np.poly(z))) + print(' a = %s' % str(np.poly(p) / k)) # Plot transfer function H(f), is H(z) for z = exp(j w), so along the unit circle # . 0 Hz at 1 + 0j, fs / 4 at 0 + 1j, fNyquist = fs / 2 at -1 + 0j