def draw_taug(self): bb = fb.fil[0]['ba'][0] aa = fb.fil[0]['ba'][1] wholeF = fb.fil[0]['freqSpecsRangeType'] != 'half' f_S = fb.fil[0]['f_S'] [w, tau_g] = grpdelay(bb,aa, rc.params['N_FFT'], whole = wholeF)#, # verbose = self.chkWarnings.isChecked()) F = w / (2 * np.pi) * fb.fil[0]['f_S'] if fb.fil[0]['freqSpecsRangeType'] == 'sym': tau_g = np.fft.fftshift(tau_g) F = F - f_S / 2. if fb.fil[0]['freq_specs_unit'] in {'f_S', 'f_Ny'}: tau_str = r'$ \tau_g(\mathrm{e}^{\mathrm{j} \Omega}) / T_S \; \rightarrow $' else: tau_str = r'$ \tau_g(\mathrm{e}^{\mathrm{j} \Omega})$'\ + ' in ' + fb.fil[0]['plt_tUnit'] + r' $ \rightarrow $' tau_g = tau_g / fb.fil[0]['f_S'] self.ax = self.figure.add_subplot(111) self.ax.hold(False) self.ax.plot(F, tau_g) self.canvas.draw()
def draw_taug(self): """ Draw group delay """ bb = fb.fil[0]['ba'][0] aa = fb.fil[0]['ba'][1] wholeF = fb.fil[0]['freqSpecsRangeType'] != 'half' f_S = fb.fil[0]['f_S'] # scale = self.cmbUnitsPhi.itemData(self.cmbUnitsPhi.currentIndex()) [tau_g, w] = grpdelay(bb,aa, rc.params['N_FFT'], whole = wholeF) F = w / (2 * np.pi) * fb.fil[0]['f_S'] if fb.fil[0]['freqSpecsRangeType'] == 'sym': tau_g = np.fft.fftshift(tau_g) F = F - f_S / 2. self.ax.plot(F, tau_g, label = "Group Delay") self.ax.set_xlabel(fb.fil[0]['plt_fLabel']) self.ax.set_ylabel(r'$ \tau_g(\mathrm{e}^{\mathrm{j} \Omega}) / T_S \; \rightarrow $') # widen limits to suppress numerical inaccuracies when tau_g = constant self.ax.axis(fb.fil[0]['freqSpecsRange'] + [max(min(tau_g)-0.5,0), max(tau_g) + 0.5]) self.mplwidget.redraw()
def draw_taug(self): bb = fb.fil[0]['ba'][0] aa = fb.fil[0]['ba'][1] [w, tau_g] = grpdelay(bb, aa, 2048, whole=True) F = w * fb.fil[0]['f_S'] self.ax = self.figure.add_subplot(111) self.ax.hold(False) self.ax.plot(F, tau_g) self.canvas.draw()
def calc_tau_g(self): """ (Re-)Calculate the complex frequency response H(f) """ bb = fb.fil[0]['ba'][0] aa = fb.fil[0]['ba'][1] # calculate H_cmplx(W) (complex) for W = 0 ... 2 pi: self.W, self.tau_g = grpdelay(bb, aa, params['N_FFT'], whole = True, verbose = self.verbose) # self.chkWarnings.isChecked()) # Zero phase filters have no group delay (Causal+AntiCausal) if 'baA' in fb.fil[0]: self.tau_g = np.zeros(self.tau_g.size)
def draw_taug(self): """ Draw group delay """ self.ax.clear() bb = fb.fil[0]['ba'][0] aa = fb.fil[0]['ba'][1] wholeF = fb.fil[0]['freqSpecsRangeType'] != 'half' f_S = fb.fil[0]['f_S'] [w, tau_g] = grpdelay(bb, aa, params['N_FFT'], whole=wholeF, verbose=self.chkWarnings.isChecked()) F = w / (2 * np.pi) * fb.fil[0]['f_S'] if fb.fil[0]['freqSpecsRangeType'] == 'sym': tau_g = np.fft.fftshift(tau_g) F = F - f_S / 2. if fb.fil[0]['freq_specs_unit'] in {'f_S', 'f_Ny'}: tau_str = r'$ \tau_g(\mathrm{e}^{\mathrm{j} \Omega}) / T_S \; \rightarrow $' else: tau_str = r'$ \tau_g(\mathrm{e}^{\mathrm{j} \Omega})$'\ + ' in ' + fb.fil[0]['plt_tUnit'] + r' $ \rightarrow $' tau_g = tau_g / fb.fil[0]['f_S'] #--------------------------------------------------------- line_tau_g, = self.ax.plot(F, tau_g, label="Group Delay") #--------------------------------------------------------- self.ax.set_title(r'Group Delay $ \tau_g$') self.ax.set_xlabel(fb.fil[0]['plt_fLabel']) self.ax.set_ylabel(tau_str) # widen y-limits to suppress numerical inaccuracies when tau_g = constant self.ax.set_ylim([max(min(tau_g) - 0.5, 0), max(tau_g) + 0.5]) self.ax.set_xlim(fb.fil[0]['freqSpecsRange']) self.redraw()