diff options
author | n4hy | 2008-10-04 19:01:01 +0000 |
---|---|---|
committer | n4hy | 2008-10-04 19:01:01 +0000 |
commit | 0516ac157ec5413634b5a58a0acc02a836cfe426 (patch) | |
tree | 6b86e927c80004b5dedfee9c2ee9b49ddc29bd13 | |
parent | daeac31043577697056aa78dbbf131700c67ed13 (diff) | |
download | gnuradio-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.h | 22 | ||||
-rw-r--r-- | gnuradio-core/src/lib/general/gr_firdes.i | 123 |
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 |