Phase Shift: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
No edit summary
(This adds an example flowgraph. This flowgraph creates a complex sinusoid, then allows the user to adjust the phase in real time to see how it affects a time domain display and constellation diagram.)
Line 1: Line 1:
This block will phase shift the input signal by the specified phase
This block will phase shift the input signal by the specified phase by multiplying the input times a shift value:  
by multiplying the input times a shift value:  


<syntaxhighlight lang="c++">gr_complex(cos(d_shift_in_radians),sin(d_shift_in_radians))</syntaxhighlight>
<syntaxhighlight lang="c++">gr_complex(cos(d_shift_in_radians),sin(d_shift_in_radians))</syntaxhighlight>
Notes:<br>
Notes:<br>
If degrees are provided, the block automatically handles the conversion.
If degrees are provided, the block automatically handles the conversion.


This block functions like a [[Multiply Constant]], but with the constant set to e<sup>j·shift</sup>, i.e. the corresponding value on the complex unit circle.
This block functions like a [[Multiply Constant]], but with the constant set to e<sup>j·shift</sup>, i.e. the corresponding value on the complex unit circle.
Line 18: Line 16:


== Example Flowgraph ==
== Example Flowgraph ==
[[File:PhaseShiftDemo.jpg|800px|Flowgraph demonstrating the Phase Shift block. This flowgraph will allow the user to change the phase of a complex sinusoid and see how that affects the time domain and constellation graphs.]]
This flowgraph demonstrates how the Phase Shift block will change the phase of a complex sinusoid. It also demonstrates how shifting the phase will change its appearance on a constellation diagram. It creates a complex sinusoid (the [[Signal Source]] block), runs the sinusoid through the '''Phase Shift''' block, then into a [[QT GUI Time Sink]] for display of the time domain of the signal. The phase within the '''Phase Shift''' block is controlled by a [[QT GUI Range]] block. The range block allows the phase to be adjustable between -360 to +360 degrees (-2*pi to +2*pi).
Along with that is a [[Complex Conjugate]] block that is used to show the phase in the [[QT GUI Constellation Sink]]. (NOTE: If the signal going into the constellation or '''Argand''' diagram is not at 0 Hz, or centered around 0 Hz, it will spin. This makes it impossible to see the actual phase.) By multiplying the phase-shifted sinusoid with its non-phase-shifted complex conjugate, we can see the phase shift as the range value is adjusted. Two [[Vector Source]] blocks create a more-visible cross bar showing the real and imaginary axes.
Gnu Radio blocks used for this demonstration: [[Signal Source]], [[Complex Conjugate]], [[QT GUI Time Sink]], [[QT GUI Range]], [[Variable]], [[Vector Source]], [[Multiply]], [[QT GUI Constellation Sink]]


== Source Files ==
== Source Files ==

Revision as of 18:58, 12 April 2024

This block will phase shift the input signal by the specified phase by multiplying the input times a shift value:

gr_complex(cos(d_shift_in_radians),sin(d_shift_in_radians))

Notes:
If degrees are provided, the block automatically handles the conversion.

This block functions like a Multiply Constant, but with the constant set to ej·shift, i.e. the corresponding value on the complex unit circle.

Parameters

(R): Run-time adjustable

Phase Shift
default: '0.0'
Units
options: ['Radians', 'Degrees']

Example Flowgraph

Flowgraph demonstrating the Phase Shift block. This flowgraph will allow the user to change the phase of a complex sinusoid and see how that affects the time domain and constellation graphs.

This flowgraph demonstrates how the Phase Shift block will change the phase of a complex sinusoid. It also demonstrates how shifting the phase will change its appearance on a constellation diagram. It creates a complex sinusoid (the Signal Source block), runs the sinusoid through the Phase Shift block, then into a QT GUI Time Sink for display of the time domain of the signal. The phase within the Phase Shift block is controlled by a QT GUI Range block. The range block allows the phase to be adjustable between -360 to +360 degrees (-2*pi to +2*pi).

Along with that is a Complex Conjugate block that is used to show the phase in the QT GUI Constellation Sink. (NOTE: If the signal going into the constellation or Argand diagram is not at 0 Hz, or centered around 0 Hz, it will spin. This makes it impossible to see the actual phase.) By multiplying the phase-shifted sinusoid with its non-phase-shifted complex conjugate, we can see the phase shift as the range value is adjusted. Two Vector Source blocks create a more-visible cross bar showing the real and imaginary axes.

Gnu Radio blocks used for this demonstration: Signal Source, Complex Conjugate, QT GUI Time Sink, QT GUI Range, Variable, Vector Source, Multiply, QT GUI Constellation Sink

Source Files

C++ files
TODO
Header files
TODO
Public header files
TODO
Block definition
blocks_phase_shift.block.yml