self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbpfPage)
elif(ftype == "Complex Band Pass"):
self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbpfPage)
+ elif(ftype == "Band Notch"):
+ self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbnfPage)
elif(ftype == "High Pass"):
self.gui.filterTypeWidget.setCurrentWidget(self.gui.firhpfPage)
+ elif(ftype == "Root Raised Cosine"):
+ self.gui.filterTypeWidget.setCurrentWidget(self.gui.rrcPage)
+ elif(ftype == "Gaussian"):
+ self.gui.filterTypeWidget.setCurrentWidget(self.gui.gausPage)
self.design()
designer = {"Low Pass" : self.design_win_lpf,
"Band Pass" : self.design_win_bpf,
"Complex Band Pass" : self.design_win_cbpf,
- "High Pass" : self.design_win_hpf}
+ "Band Notch" : self.design_win_bnf,
+ "High Pass" : self.design_win_hpf,
+ "Root Raised Cosine" : self.design_win_rrc,
+ "Gaussian" : self.design_win_gaus}
wintype = self.filterWindows[winstr]
taps,r = designer[ftype](fs, gain, wintype)
else:
return ([],r)
+ def design_win_bnf(self, fs, gain, wintype):
+ ret = True
+ pb1,r = self.gui.startofBnfStopBandEdit.text().toDouble()
+ ret = r and ret
+ pb2,r = self.gui.endofBnfStopBandEdit.text().toDouble()
+ ret = r and ret
+ tb,r = self.gui.bnfTransitionEdit.text().toDouble()
+ ret = r and ret
+ atten,r = self.gui.bnfStopBandAttenEdit.text().toDouble()
+ ret = r and ret
+
+ if(r):
+ taps = gr.firdes.band_reject_2(gain, fs, pb1, pb2, tb,
+ atten, wintype)
+ return (taps,r)
+ else:
+ return ([],r)
+
def design_win_hpf(self, fs, gain, wintype):
ret = True
sb,r = self.gui.endofHpfStopBandEdit.text().toDouble()
else:
return ([],r)
+ def design_win_rrc(self, fs, gain, wintype):
+ ret = True
+ sr,r = self.gui.rrcSymbolRateEdit.text().toDouble()
+ ret = r and ret
+ alpha,r = self.gui.rrcAlphaEdit.text().toDouble()
+ ret = r and ret
+ ntaps,r = self.gui.rrcNumTapsEdit.text().toInt()
+ ret = r and ret
+ if(r):
+ taps = gr.firdes.root_raised_cosine(gain, fs, sr,
+ alpha, ntaps)
+ return (taps,r)
+ else:
+ return ([],r)
+
+ def design_win_gaus(self, fs, gain, wintype):
+ ret = True
+ sr,r = self.gui.gausSymbolRateEdit.text().toDouble()
+ ret = r and ret
+ bt,r = self.gui.gausBTEdit.text().toDouble()
+ ret = r and ret
+ ntaps,r = self.gui.gausNumTapsEdit.text().toInt()
+ ret = r and ret
+
+ if(r):
+ spb = fs / sr
+ taps = gr.firdes.gaussian(gain, spb, bt, ntaps)
+ return (taps,r)
+ else:
+ return ([],r)
# Design Functions for Equiripple Filters
def design_opt_lpf(self, fs, gain, wintype=None):