FFT Filter: Difference between revisions
No edit summary |
(Add links to source files and delete unrelated last link) |
||
(3 intermediate revisions by 3 users not shown) | |||
Line 23: | Line 23: | ||
== Example Flowgraph == | == Example Flowgraph == | ||
This flowgraph implements a Broadcast FM stereo receiver using basic blocks. | |||
[[File:USRP_FM_stereo_fg.png|644px]] | |||
== Source Files == | == Source Files == | ||
; C++ files | ; C++ files | ||
: [https://github.com/gnuradio/gnuradio | : [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/lib/fft_filter_ccc_impl.cc Complex input/output and complex taps] | ||
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/lib/fft_filter_ccf_impl.cc Complex input/output and float taps] | |||
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/lib/fft_filter_fff_impl.cc Float input/output and float taps] | |||
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/lib/fft_filter.cc Algorithms implementation] | |||
; Header files | ; Header files | ||
: [https://github.com/gnuradio/gnuradio | : [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/lib/fft_filter_ccc_impl.h Complex input/output and complex taps] | ||
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/lib/fft_filter_ccf_impl.h Complex input/output and float taps] | |||
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/lib/fft_filter_fff_impl.h Float input/output and float taps] | |||
; Public header files | ; Public header files | ||
: [https://github.com/gnuradio/gnuradio | : [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/include/gnuradio/filter/fft_filter_ccc.h Complex input/output and complex taps] | ||
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/include/gnuradio/filter/fft_filter_ccf.h Complex input/output and float taps] | |||
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/include/gnuradio/filter/fft_filter_fff.h Float input/output and float taps] | |||
; Block definition | ; Block definition | ||
: [https://github.com/gnuradio/gnuradio | : [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/grc/filter_fft_filter_xxx.block.yml Yaml] | ||
== Outside References == | |||
: [http://www.trondeau.com/blog/2014/2/27/to-use-or-not-to-use-fft-filters.html To Use or Not to Use FFT Filters] |
Latest revision as of 16:17, 31 March 2022
This block implements a decimating filter using the fast convolution method via an FFT. It is an alternative to the Decimating FIR Filter, useful when there is a large number of taps.
This filter is implemented by using the FFTW package to perform the required FFTs. An optional argument, nthreads, may be passed to the constructor (or set using the set_nthreads member function) to split the FFT among N number of threads. This can improve performance on very large FFTs (that is, if the number of taps used is very large) if you have enough threads/cores to support it.
For standard filters such as lowpass, highpass, bandpass, etc., the filter.firdes and filter.optfir classes provide convenient generating methods.
Parameters
(R): Run-time adjustable
- Decimation
- Decimation rate. The output stream will have this decimation applied to it. A decimation rate of 1 simply means no decimation. If decimation is set higher than 1, make sure the filter will remove energy outside of the "output region", i.e. -Fs/2 to Fs/2 where Fs is the input sample rate divided by the decimation rate.
- Taps (R)
- Taps to use in FIR filter.
- Sample Delay
- Number of additional samples to delay signal by.
- Number of Threads
- Number of threads to use for this block, i.e. to increase performance on multicore CPUs.
Example Flowgraph
This flowgraph implements a Broadcast FM stereo receiver using basic blocks.
Source Files
- C++ files
- Complex input/output and complex taps
- Complex input/output and float taps
- Float input/output and float taps
- Algorithms implementation
- Header files
- Complex input/output and complex taps
- Complex input/output and float taps
- Float input/output and float taps
- Public header files
- Complex input/output and complex taps
- Complex input/output and float taps
- Float input/output and float taps
- Block definition
- Yaml