Difference between revisions of "Filter Delay"

From GNU Radio
Jump to: navigation, search
(revised per PR/4542)
 
Line 1: Line 1:
 
[[Category:Block Docs]]
 
[[Category:Block Docs]]
The block takes one or two float stream and outputs a complex stream.
+
The purpose of this block is to compensate the delay that a linear-phase filter introduces.
  
If only one float stream is input, the real output is a delayed version of this input and the imaginary output is the filtered output.
+
It does that by introducing a delay of half the length of the FIR tap vector on passed-through samples.
If two floats are connected to the input, then the real output is the delayed version of the first input, and the imaginary output is the filtered output.
 
  
The delay in the real path accounts for the group delay introduced by the filter in the imaginary path. The filter taps needs to be calculated before initializing this block.
+
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 ==
  
 
; Taps
 
; Taps
: The filter taps to use.
+
: The vector of real-valued tags. Half of the length of this vector is the delay introduced by this block.
  
 
== Example Flowgraph ==
 
== Example Flowgraph ==

Latest revision as of 22:14, 21 April 2021

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[edit]

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

Example Flowgraph[edit]

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[edit]

C++ files
TODO
Header files
TODO
Public header files
TODO
Block definition
TODO