def __init__(self): QWidget.__init__(self) self.p = [0.5, 0.5j] self.ft = 'IIR' # the following defines which subwidgets are "a"ctive, "i"nvisible or "d"eactivated self.rt_dicts = ('com', ) self.rt_dict = { 'COM': { 'man': { 'fo': ('d', 'N'), 'msg': ('a', "<span>Enter poles <b><i>p</i></b> for allpass function," "zeros will be calculated.</span>") }, }, 'AP': { 'man': {} } } self.info_doc = []
def __init__(self): QWidget.__init__(self) self.ft = 'IIR' c = Common() self.rt_dict = c.rt_base_iir self.rt_dict_add = { 'COM':{'man':{'msg':('a', "Enter the filter order <b><i>N</i></b>, the minimum stop " "band attenuation <b><i>A<sub>SB</sub></i></b> and frequency or " "frequencies <b><i>F<sub>C</sub></i></b> where gain first drops " "below the max passband ripple <b><i>-A<sub>PB</sub></i></b> .")}}, 'LP': {'man':{}, 'min':{}}, 'HP': {'man':{}, 'min':{}}, 'BS': {'man':{}, 'min':{}}, 'BP': {'man':{}, 'min':{}}, } self.info_doc = [] self.info_doc.append('ellip()\n========') self.info_doc.append(sig.ellip.__doc__) self.info_doc.append('ellipord()\n==========') self.info_doc.append(ellipord.__doc__)
def __init__(self): QWidget.__init__(self) self.N = 5 self.ft = 'FIR' self.rt_dicts = ('com', ) self.rt_dict = { 'COM': { 'man': { 'fo': ('a', 'N'), 'msg': ('a', "<span>Enter desired number of delays <b><i>N</i></b>.</span>" ) }, }, 'AP': { 'man': {} } } self.info_doc = []
def __init__(self): QWidget.__init__(self) self.ft = 'FIR' self.fft_window = None # dictionary for firwin window settings self.win_dict = fb.fil[0]['win_fir'] c = Common() self.rt_dict = c.rt_base_iir self.rt_dict_add = { 'COM':{'min':{'msg':('a', r"<br /><b>Note:</b> Filter order is only a rough approximation " "and most likely far too low!")}, 'man':{'msg':('a', r"Enter desired filter order <b><i>N</i></b> and " "<b>-6 dB</b> pass band corner " "frequency(ies) <b><i>F<sub>C</sub></i></b> .")}, }, 'LP': {'man':{}, 'min':{}}, 'HP': {'man':{'msg':('a', r"<br /><b>Note:</b> Order needs to be odd!")}, 'min':{}}, 'BS': {'man':{'msg':('a', r"<br /><b>Note:</b> Order needs to be odd!")}, 'min':{}}, 'BP': {'man':{}, 'min':{}}, } self.info = """**Windowed FIR filters**
def __init__(self): QWidget.__init__(self) self.delays = 12 # number of delays per stage self.stages = 1 # number of stages self.ft = 'FIR' self.rt_dicts = () # Common data for all filter response types: # This data is merged with the entries for individual response types # (common data comes first): self.rt_dict = { 'COM':{'man':{'fo': ('d', 'N'), 'msg':('a', "Enter desired order (= delays) <b><i>M</i></b> per stage and" " the number of <b>stages</b>. Target frequencies and amplitudes" " are only used for comparison, not for the design itself.") }, 'min':{'fo': ('d', 'N'), 'msg':('a', "Enter desired attenuation <b><i>A<sub>SB</sub></i></b> at " "the corner of the stop band <b><i>F<sub>SB</sub></i></b>. " "Choose the number of <b>stages</b>, the minimum order <b><i>M</i></b> " "per stage will be determined. Passband specs are not regarded.") } }, 'LP': {'man':{'tspecs': ('u', {'frq':('u','F_PB','F_SB'), 'amp':('u','A_PB','A_SB')}) }, 'min':{'tspecs': ('a', {'frq':('a','F_PB','F_SB'), 'amp':('a','A_PB','A_SB')}) } }, 'HP': {'man':{'tspecs': ('u', {'frq':('u','F_SB','F_PB'), 'amp':('u','A_SB','A_PB')}) }, 'min':{'tspecs': ('a', {'frq':('a','F_SB','F_PB'), 'amp':('a','A_SB','A_PB')}) }, }, 'BS': {'man':{'tspecs': ('u', {'frq':('u','F_PB','F_SB','F_SB2', 'F_PB2'), 'amp':('u','A_PB','A_SB','A_PB2')}), 'msg': ('a', "\nThis is not a proper band stop, it only lets pass" " frequency components around DC and <i>f<sub>S</sub></i>/2." " The order needs to be odd."), }}, 'BP': {'man':{'tspecs': ('u', {'frq':('u','F_SB','F_PB','F_PB2','F_SB2',), 'amp':('u','A_SB','A_PB','A_SB2')}), 'msg': ('a', "\nThis is not a proper band pass, it only lets pass" " frequency components around <i>f<sub>S</sub></i>/4." " The order needs to be odd."), }}, } self.info_doc = []
def __init__(self): QWidget.__init__(self) self.N = 5 self.ft = 'FIR' self.rt_dicts = ('com',) self.rt_dict = { 'COM': {'man': {'fo':('a', 'N'), 'msg':('a', "<span>Enter desired filter order <b><i>N</i></b>, corner " "frequencies of pass and stop band(s), <b><i>F<sub>PB</sub></i></b>" " and <b><i>F<sub>SB</sub></i></b> , and relative weight " "values <b><i>W </i></b> (1 ... 10<sup>6</sup>) to specify how well " "the bands are approximated.</span>") }, }, 'LP': {'man':{'wspecs': ('u','W_PB','W_SB'), 'tspecs': ('u', {'frq':('a','F_PB','F_SB'), 'amp':('u','A_PB','A_SB')}) }, }, 'HP': {'man':{'wspecs': ('u','W_SB','W_PB')}, }, 'BP': { }, 'BS': {'man':{'wspecs': ('u','W_PB','W_SB','W_PB2'), 'tspecs': ('u', {'frq':('a','F_PB','F_SB','F_SB2','F_PB2'), 'amp':('u','A_PB','A_SB','A_PB2')}) } } } self.info_doc = []
def __init__(self): QWidget.__init__(self) self.ft = 'FIR' win_names_list = [ "Boxcar", "Rectangular", "Barthann", "Bartlett", "Blackman", "Blackmanharris", "Bohman", "Cosine", "Dolph-Chebyshev", "Flattop", "General Gaussian", "Gauss", "Hamming", "Hann", "Kaiser", "Nuttall", "Parzen", "Slepian", "Triangular", "Tukey" ] self.cur_win_name = "Kaiser" # set initial window type self.alg = "ichige" # initialize windows dict with the list above for firwin window settings self.win_dict = get_windows_dict(win_names_list=win_names_list, cur_win_name=self.cur_win_name) # get initial / last setting from dictionary, updating self.win_dict self._load_dict() # instantiate FFT window with windows dict self.fft_widget = Plot_FFT_win(self, win_dict=self.win_dict, sym=True, title="pyFDA FIR Window Viewer") # hide window initially, this is modeless i.e. a non-blocking popup window self.fft_widget.hide() c = Common() self.rt_dict = c.rt_base_iir self.rt_dict_add = { 'COM': { 'min': { 'msg': ('a', "<br /><b>Note:</b> Filter order is only a rough " "approximation and most likely far too low!") }, 'man': { 'msg': ('a', "Enter desired filter order <b><i>N</i></b> and " "<b>-6 dB</b> pass band corner " "frequency(ies) <b><i>F<sub>C</sub></i></b> .") }, }, 'LP': { 'man': {}, 'min': {} }, 'HP': { 'man': { 'msg': ('a', r"<br /><b>Note:</b> Order needs to be odd!") }, 'min': {} }, 'BS': { 'man': { 'msg': ('a', r"<br /><b>Note:</b> Order needs to be odd!") }, 'min': {} }, 'BP': { 'man': {}, 'min': {} }, } self.info = """**Windowed FIR filters**
def __init__(self): QWidget.__init__(self) self.grid_density = 16 self.ft = 'FIR' self.rt_dicts = ('com', ) self.rt_dict = { 'COM': { 'man': { 'fo': ('a', 'N'), 'msg': ('a', "<span>Enter desired filter order <b><i>N</i></b>, corner " "frequencies of pass and stop band(s), <b><i>F<sub>PB</sub></i></b>" " and <b><i>F<sub>SB</sub></i></b> , and relative weight " "values <b><i>W </i></b> (1 ... 10<sup>6</sup>) to specify how well " "the bands are approximated.</span>") }, 'min': { 'fo': ('d', 'N'), 'msg': ('a', "<span>Enter the maximum pass band ripple <b><i>A<sub>PB</sub></i></b>, " "minimum stop band attenuation <b><i>A<sub>SB</sub></i></b> " "and the corresponding corner frequencies of pass and " "stop band(s), <b><i>F<sub>PB</sub></i></b> and " "<b><i>F<sub>SB</sub></i></b> .</span>") } }, 'LP': { 'man': { 'wspecs': ('a', 'W_PB', 'W_SB'), 'tspecs': ('u', { 'frq': ('a', 'F_PB', 'F_SB'), 'amp': ('u', 'A_PB', 'A_SB') }) }, 'min': { 'wspecs': ('d', 'W_PB', 'W_SB'), 'tspecs': ('a', { 'frq': ('a', 'F_PB', 'F_SB'), 'amp': ('a', 'A_PB', 'A_SB') }) } }, 'HP': { 'man': { 'wspecs': ('a', 'W_SB', 'W_PB'), 'tspecs': ('u', { 'frq': ('a', 'F_SB', 'F_PB'), 'amp': ('u', 'A_SB', 'A_PB') }) }, 'min': { 'wspecs': ('d', 'W_SB', 'W_PB'), 'tspecs': ('a', { 'frq': ('a', 'F_SB', 'F_PB'), 'amp': ('a', 'A_SB', 'A_PB') }) } }, 'BP': { 'man': { 'wspecs': ('a', 'W_SB', 'W_PB', 'W_SB2'), 'tspecs': ('u', { 'frq': ('a', 'F_SB', 'F_PB', 'F_PB2', 'F_SB2'), 'amp': ('u', 'A_SB', 'A_PB', 'A_SB2') }) }, 'min': { 'wspecs': ('d', 'W_SB', 'W_PB', 'W_SB2'), 'tspecs': ('a', { 'frq': ('a', 'F_SB', 'F_PB', 'F_PB2', 'F_SB2'), 'amp': ('a', 'A_SB', 'A_PB', 'A_SB2') }) }, }, 'BS': { 'man': { 'wspecs': ('a', 'W_PB', 'W_SB', 'W_PB2'), 'tspecs': ('u', { 'frq': ('a', 'F_PB', 'F_SB', 'F_SB2', 'F_PB2'), 'amp': ('u', 'A_PB', 'A_SB', 'A_PB2') }) }, 'min': { 'wspecs': ('d', 'W_PB', 'W_SB', 'W_PB2'), 'tspecs': ('a', { 'frq': ('a', 'F_PB', 'F_SB', 'F_SB2', 'F_PB2'), 'amp': ('a', 'A_PB', 'A_SB', 'A_PB2') }) } }, 'HIL': { 'man': { 'wspecs': ('a', 'W_SB', 'W_PB', 'W_SB2'), 'tspecs': ('u', { 'frq': ('a', 'F_SB', 'F_PB', 'F_PB2', 'F_SB2'), 'amp': ('u', 'A_SB', 'A_PB', 'A_SB2') }) } }, 'DIFF': { 'man': { 'wspecs': ('a', 'W_PB'), 'tspecs': ('u', { 'frq': ('a', 'F_PB'), 'amp': ('i', ) }), 'msg': ('a', "Enter the max. frequency up to where the differentiator " "works.") } } } self.info_doc = [] self.info_doc.append('remez()\n=======') self.info_doc.append(sig.remez.__doc__) self.info_doc.append('remezord()\n==========') self.info_doc.append(remezord.__doc__)