Filter Delay: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(Created page with "Category:Block Docs Category:Stub Docs This is the template for the "Page-per-block Docs". This first section should describe what the block...")
 
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Block Docs]]
[[Category:Block Docs]]
[[Category:Stub Docs]]
The purpose of this block is to compensate the delay that a linear-phase filter introduces.
This is the template for the [[:Category:Block_Docs|"Page-per-block Docs"]].  This first section should describe what the block does and how to use it, using however many paragraphs necessary.  Note that the title of the wiki page should match the block's name in GRC, i.e. the one defined in the block's .grc file.  Look at the [[FFT]] Block for a good example.


As this is a basic template, it's also in the [[:Category:Stub_Docs|"Stub Docs category"]]. Please improve it.
It does that by introducing a delay of half the length of the FIR tap vector on passed-through samples.
 
The block takes one or two float stream and outputs a stream composed of pairs of floats. (In GNU Radio, pairs of floats are identical to complex numbers, where the real and imaginary parts are the first and second element, respectively.)
 
If only one float stream is input, the first element of each output item is a delayed version of this input and the second element is the filtered output.
 
If two floats are connected to the input, then the first element of each output item is the delayed version of the first input, and the second element is the filtered second input.
 
The delay in the first elements of the output accounts for the group delay introduced by the filter in the second elements path under the assumption of linear-phase filtering. The filter taps need to be calculated before initializing this block.


== Parameters ==
== Parameters ==
(''R''): <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls ''Run-time adjustable'']</span>
; Param 1 (''R'')
: Description of parameter, provide any tips or recommended values.  Note that the name of the parameter above should match the param's label that shows up in grc (e.g. Sample Rate).


; Param 2
; Taps
: blah blah blah
: The vector of real-valued taps. Half of the length of this vector is the delay introduced by this block.


== Example Flowgraph ==
== Example Flowgraph ==
Line 21: Line 24:


; C++ files
; C++ files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/lib/filter_delay_fc_impl.cc filter_delay_fc_impl.cc]


; Header files
; Header files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/lib/filter_delay_fc_impl.h filter_delay_fc_impl.h]


; Public header files
; Public header files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/include/gnuradio/filter/filter_delay_fc.h filter_delay_fc.h]


; Block definition
; Block definition
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-filter/grc/filter_filter_delay_fc.block.yml filter_filter_delay_fc.block.yml]

Latest revision as of 18:00, 15 May 2024

The purpose of this block is to compensate the delay that a linear-phase filter introduces.

It does that by introducing a delay of half the length of the FIR tap vector on passed-through samples.

The block takes one or two float stream and outputs a stream composed of pairs of floats. (In GNU Radio, pairs of floats are identical to complex numbers, where the real and imaginary parts are the first and second element, respectively.)

If only one float stream is input, the first element of each output item is a delayed version of this input and the second element is the filtered output.

If two floats are connected to the input, then the first element of each output item is the delayed version of the first input, and the second element is the filtered second input.

The delay in the first elements of the output accounts for the group delay introduced by the filter in the second elements path under the assumption of linear-phase filtering. The filter taps need to be calculated before initializing this block.

Parameters

Taps
The vector of real-valued taps. Half of the length of this vector is the delay introduced by this block.

Example Flowgraph

Insert description of flowgraph here, then show a screenshot of the flowgraph and the output if there is an interesting GUI. Currently we have no standard method of uploading the actual flowgraph to the wiki or git repo, unfortunately. The plan is to have an example flowgraph showing how the block might be used, for every block, and the flowgraphs will live in the git repo.

Source Files

C++ files
filter_delay_fc_impl.cc
Header files
filter_delay_fc_impl.h
Public header files
filter_delay_fc.h
Block definition
filter_filter_delay_fc.block.yml