summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorn4hy2008-10-04 19:01:01 +0000
committern4hy2008-10-04 19:01:01 +0000
commit0516ac157ec5413634b5a58a0acc02a836cfe426 (patch)
tree6b86e927c80004b5dedfee9c2ee9b49ddc29bd13
parentdaeac31043577697056aa78dbbf131700c67ed13 (diff)
downloadgnuradio-0516ac157ec5413634b5a58a0acc02a836cfe426.tar.gz
gnuradio-0516ac157ec5413634b5a58a0acc02a836cfe426.tar.bz2
gnuradio-0516ac157ec5413634b5a58a0acc02a836cfe426.zip
completion of adding new filter design interfaces to gr_firdes.i. Still need to add tests to qa code
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@9713 221aa14e-8319-0410-a670-987f0aec2ac5
-rw-r--r--gnuradio-core/src/lib/general/gr_firdes.h22
-rw-r--r--gnuradio-core/src/lib/general/gr_firdes.i123
2 files changed, 138 insertions, 7 deletions
diff --git a/gnuradio-core/src/lib/general/gr_firdes.h b/gnuradio-core/src/lib/general/gr_firdes.h
index 11752ddae..49fba7993 100644
--- a/gnuradio-core/src/lib/general/gr_firdes.h
+++ b/gnuradio-core/src/lib/general/gr_firdes.h
@@ -77,12 +77,15 @@ class gr_firdes {
* \p transition_width: width of transition band (Hz).
* \p attenuation_dB required stopband attenuation
* The normalized width of the transition
- * band is what sets the number of taps
+ * band and the required stop band
+ * attenuation is what sets the number of taps
* required. Narrow --> more taps
+ * More attenuatin --> more taps
* \p window_type: What kind of window to use. Determines
* maximum attenuation and passband ripple.
* \p beta: parameter for Kaiser window
*/
+
static std::vector<float>
low_pass_2 (double gain,
double sampling_freq,
@@ -124,8 +127,10 @@ class gr_firdes {
* \p transition_width: width of transition band (Hz).
* \p attenuation_dB out of band attenuation
* The normalized width of the transition
- * band is what sets the number of taps
+ * band and the required stop band
+ * attenuation is what sets the number of taps
* required. Narrow --> more taps
+ * More attenuation --> more taps
* \p window_type: What kind of window to use. Determines
* maximum attenuation and passband ripple.
* \p beta: parameter for Kaiser window
@@ -174,12 +179,15 @@ class gr_firdes {
* \p transition_width: width of transition band (Hz).
* \p attenuation_dB out of band attenuation
* The normalized width of the transition
- * band is what sets the number of taps
+ * band and the required stop band
+ * attenuation is what sets the number of taps
* required. Narrow --> more taps
+ * More attenuation --> more taps
* \p window_type: What kind of window to use. Determines
* maximum attenuation and passband ripple.
* \p beta: parameter for Kaiser window
*/
+
static std::vector<float>
band_pass_2 (double gain,
double sampling_freq,
@@ -225,8 +233,10 @@ class gr_firdes {
* \p transition_width: width of transition band (Hz).
* \p attenuation_dB out of band attenuation
* The normalized width of the transition
- * band is what sets the number of taps
+ * band and the required stop band
+ * attenuation is what sets the number of taps
* required. Narrow --> more taps
+ * More attenuation --> more taps
* \p window_type: What kind of window to use. Determines
* maximum attenuation and passband ripple.
* \p beta: parameter for Kaiser window
@@ -277,8 +287,10 @@ class gr_firdes {
* \p transition_width: width of transition band (Hz).
* \p attenuation_dB out of band attenuation
* The normalized width of the transition
- * band is what sets the number of taps
+ * band and the required stop band
+ * attenuation is what sets the number of taps
* required. Narrow --> more taps
+ * More attenuation --> more taps
* \p window_type: What kind of window to use. Determines
* maximum attenuation and passband ripple.
* \p beta: parameter for Kaiser window
diff --git a/gnuradio-core/src/lib/general/gr_firdes.i b/gnuradio-core/src/lib/general/gr_firdes.i
index 73becadba..6bf6cb06c 100644
--- a/gnuradio-core/src/lib/general/gr_firdes.i
+++ b/gnuradio-core/src/lib/general/gr_firdes.i
@@ -51,9 +51,10 @@ class gr_firdes {
* \p transition_width: width of transition band (Hz).
* \p attenuation_dB out of band attenuation
* The normalized width of the transition
- * band is what sets the number of taps
+ * band and the required stop band
+ * attenuation is what sets the number of taps
* required. Narrow --> more taps
- * \p attenuation_dB The required stop band attenuation in dB
+ * More attenuation --> more taps
* \p window_type: What kind of window to use. Determines
* maximum attenuation and passband ripple.
* \p beta: parameter for Kaiser window
@@ -82,6 +83,7 @@ class gr_firdes {
* maximum attenuation and passband ripple.
* \p beta: parameter for Kaiser window
*/
+
static std::vector<float>
high_pass (double gain,
double sampling_freq,
@@ -92,6 +94,34 @@ class gr_firdes {
) throw(std::out_of_range);
/*!
+ * \brief use "window method" to design a high-pass FIR filter
+ *
+ * \p gain: overall gain of filter (typically 1.0)
+ * \p sampling_freq: sampling freq (Hz)
+ * \p cutoff_freq: center of transition band (Hz)
+ * \p transition_width: width of transition band (Hz).
+ * \p attenuation_dB out of band attenuation
+ * The normalized width of the transition
+ * band and the required stop band
+ * attenuation is what sets the number of taps
+ * required. Narrow --> more taps
+ * More attenuation --> more taps
+ * \p window_type: What kind of window to use. Determines
+ * maximum attenuation and passband ripple.
+ * \p beta: parameter for Kaiser window
+ */
+
+ static std::vector<float>
+ high_pass_2 (double gain,
+ double sampling_freq,
+ double cutoff_freq, // Hz center of transition band
+ double transition_width, // Hz width of transition band
+ double attenuation_dB, // out of band attenuation dB
+ win_type window = WIN_HAMMING,
+ double beta = 6.76); // used only with Kaiser
+
+
+ /*!
* \brief use "window method" to design a band-pass FIR filter
*
* \p gain: overall gain of filter (typically 1.0)
@@ -106,6 +136,7 @@ class gr_firdes {
* maximum attenuation and passband ripple.
* \p beta: parameter for Kaiser window
*/
+
static std::vector<float>
band_pass (double gain,
double sampling_freq,
@@ -118,6 +149,35 @@ class gr_firdes {
/*!
+ * \brief use "window method" to design a band-pass FIR filter
+ *
+ * \p gain: overall gain of filter (typically 1.0)
+ * \p sampling_freq: sampling freq (Hz)
+ * \p low_cutoff_freq: center of transition band (Hz)
+ * \p high_cutoff_freq: center of transition band (Hz)
+ * \p transition_width: width of transition band (Hz).
+ * \p attenuation_dB out of band attenuation
+ * The normalized width of the transition
+ * band and the required stop band
+ * attenuation is what sets the number of taps
+ * required. Narrow --> more taps
+ * More attenuation --> more taps
+ * \p window_type: What kind of window to use. Determines
+ * maximum attenuation and passband ripple.
+ * \p beta: parameter for Kaiser window
+ */
+
+ static std::vector<float>
+ band_pass_2 (double gain,
+ double sampling_freq,
+ double low_cutoff_freq, // Hz beginning transition band
+ double high_cutoff_freq, // Hz beginning transition band
+ double transition_width, // Hz width of transition band
+ double attenuation_dB, // out of band attenuation dB
+ win_type window = WIN_HAMMING,
+ double beta = 6.76); // used only with Kaiser
+
+ /*!
* \brief use "window method" to design a band-reject FIR filter
*
* \p gain: overall gain of filter (typically 1.0)
@@ -145,6 +205,35 @@ class gr_firdes {
/*!
+ * \brief use "window method" to design a complex band-pass FIR filter
+ *
+ * \p gain: overall gain of filter (typically 1.0)
+ * \p sampling_freq: sampling freq (Hz)
+ * \p low_cutoff_freq: center of transition band (Hz)
+ * \p high_cutoff_freq: center of transition band (Hz)
+ * \p transition_width: width of transition band (Hz).
+ * \p attenuation_dB out of band attenuation
+ * The normalized width of the transition
+ * band and the required stop band
+ * attenuation is what sets the number of taps
+ * required. Narrow --> more taps
+ * More attenuation --> more taps
+ * \p window_type: What kind of window to use. Determines
+ * maximum attenuation and passband ripple.
+ * \p beta: parameter for Kaiser window
+ */
+
+ static std::vector<gr_complex>
+ complex_band_pass_2 (double gain,
+ double sampling_freq,
+ double low_cutoff_freq, // Hz beginning transition band
+ double high_cutoff_freq, // Hz beginning transition band
+ double transition_width, // Hz width of transition band
+ double attenuation_dB, // out of band attenuation dB
+ win_type window = WIN_HAMMING,
+ double beta = 6.76); // used only with Kaiser
+
+ /*!
* \brief use "window method" to design a band-reject FIR filter
*
* \p gain: overall gain of filter (typically 1.0)
@@ -170,6 +259,36 @@ class gr_firdes {
double beta = 6.76
) throw(std::out_of_range);
+
+ /*!
+ * \brief use "window method" to design a band-reject FIR filter
+ *
+ * \p gain: overall gain of filter (typically 1.0)
+ * \p sampling_freq: sampling freq (Hz)
+ * \p low_cutoff_freq: center of transition band (Hz)
+ * \p high_cutoff_freq: center of transition band (Hz)
+ * \p transition_width: width of transition band (Hz).
+ * \p attenuation_dB out of band attenuation
+ * The normalized width of the transition
+ * band and the required stop band
+ * attenuation is what sets the number of taps
+ * required. Narrow --> more taps
+ * More attenuation --> more taps
+ * \p window_type: What kind of window to use. Determines
+ * maximum attenuation and passband ripple.
+ * \p beta: parameter for Kaiser window
+ */
+
+ static std::vector<float>
+ band_reject_2 (double gain,
+ double sampling_freq,
+ double low_cutoff_freq, // Hz beginning transition band
+ double high_cutoff_freq, // Hz beginning transition band
+ double transition_width, // Hz width of transition band
+ double attenuation_dB, // out of band attenuation dB
+ win_type window = WIN_HAMMING,
+ double beta = 6.76); // used only with Kaiser
+
/*!\brief design a Hilbert Transform Filter
*
* \p ntaps: Number of taps, must be odd