In several places we have a real valued signal x(t) that needs to be converted to an analytic signal g(t) such that real(g(t)) == x(t) and imag(g(t)) = shift_by_90degrees(x(t));.
More...
#include <HilbertTransformer.hxx>
|
| unsigned int | applyIQ (std::vector< std::complex< float > > &inbuf, std::vector< std::complex< float > > &outbuf, float gain=1.0) |
| | Perform a hilbert transform on the QUADRATURE signal in the input buffer.
|
| unsigned int | apply (std::vector< std::complex< float > > &inbuf, std::vector< std::complex< float > > &outbuf, bool pos_sided=true, float gain=1.0) |
| | Perform a hilbert transform on the INPHASE signal in the input buffer.
|
| unsigned int | apply (std::vector< float > &inbuf, std::vector< std::complex< float > > &outbuf, bool pos_sided=true, float gain=1.0) |
| | Perform a hilbert transform on the signal in the floating point input buffer.
|
| std::ostream & | dump (std::ostream &os) |
| | Base (const std::string &oname) |
| | The constructor – pass a name for the object.
|
| void | registerSelf (BasePtr ptr) |
| std::string & | getObjName () |
| | get the name of this object
|
| BasePtr | findSoDaObject (const std::string &oname) |
| | find a SoDa Object by name.
|
| double | getTime () |
| | Get a time stamp in nS resolution that monotonically increases and that is very inexpensive (typically < 100nS).
|
| BasePtr | getSelfPtr () |
| | get a pointer to myself.
|
|
| | HilbertTransformer (unsigned int inout_buffer_length, unsigned int filter_length=256) |
| | constructor – build a Hilbert Transformer
|
In several places we have a real valued signal x(t) that needs to be converted to an analytic signal g(t) such that real(g(t)) == x(t) and imag(g(t)) = shift_by_90degrees(x(t));.
HilbertTransformer provides the apply functions to convert x(t) as a float or complex<float>. Hilbert Transformer also provides a function (applyIQ) to convert a complex x(t) into g(t) such that real(g(t)) = real(x(t + tau)) and imag(g(t)) = shift_by_90deg(imag(x(t + tau)))
Definition at line 56 of file HilbertTransformer.hxx.
◆ HilbertTransformer()
| SoDa::HilbertTransformer::HilbertTransformer |
( |
unsigned int | inout_buffer_length, |
|
|
unsigned int | filter_length = 256 ) |
|
protected |
constructor – build a Hilbert Transformer
- Parameters
-
| inout_buffer_length | the length of the input and output buffers |
| filter_length | the minimum length of the hilbert transform impulse response |
Referenced by make().
◆ apply() [1/2]
| unsigned int SoDa::HilbertTransformer::apply |
( |
std::vector< float > & | inbuf, |
|
|
std::vector< std::complex< float > > & | outbuf, |
|
|
bool | pos_sided = true, |
|
|
float | gain = 1.0 ) |
Perform a hilbert transform on the signal in the floating point input buffer.
- Parameters
-
| inbuf | input buffer of real (float) samples |
| outbuf | complex output buffer real is input delayed, and imag is Hilbert(input) |
| pos_sided | if true, swap I and Q outputs |
| gain | factor to apply to output buffer. |
- Returns
- M – length of input buffer.
◆ apply() [2/2]
| unsigned int SoDa::HilbertTransformer::apply |
( |
std::vector< std::complex< float > > & | inbuf, |
|
|
std::vector< std::complex< float > > & | outbuf, |
|
|
bool | pos_sided = true, |
|
|
float | gain = 1.0 ) |
Perform a hilbert transform on the INPHASE signal in the input buffer.
It is assumed that the QUADRATURE signal is zero, if not, the result is broken.
- Parameters
-
| inbuf | complex input buffer of I (real) and Q (imag) samples |
| outbuf | complex output buffer real is input.real delayed, and imag is Hilbert(input.real) |
| pos_sided | if true, swap I and Q outputs |
| gain | factor to apply to output buffer. |
- Returns
- M – length of input buffer.
◆ applyIQ()
| unsigned int SoDa::HilbertTransformer::applyIQ |
( |
std::vector< std::complex< float > > & | inbuf, |
|
|
std::vector< std::complex< float > > & | outbuf, |
|
|
float | gain = 1.0 ) |
Perform a hilbert transform on the QUADRATURE signal in the input buffer.
Pass the Inphase signal through a delay filter that matches the hilbert transform
- Parameters
-
| inbuf | complex input buffer of I (real) and Q (imag) samples |
| outbuf | complex output buffer real is input.real delayed, and imag is Hilbert(input.imag) |
| gain | factor to apply to output buffer. |
- Returns
- M – length of input buffer.
◆ dump()
| std::ostream & SoDa::HilbertTransformer::dump |
( |
std::ostream & | os | ) |
|
◆ make()
| HilbertTransformerPtr SoDa::HilbertTransformer::make |
( |
unsigned int | inout_buffer_length, |
|
|
unsigned int | filter_length = 256 ) |
|
inlinestatic |
◆ backward_I_plan
| fftwf_plan SoDa::HilbertTransformer::backward_I_plan |
|
private |
◆ backward_Q_plan
| fftwf_plan SoDa::HilbertTransformer::backward_Q_plan |
|
private |
◆ fft_I_input
| std::complex<float>* SoDa::HilbertTransformer::fft_I_input |
|
private |
◆ fft_I_output
| std::complex<float>* SoDa::HilbertTransformer::fft_I_output |
|
private |
◆ fft_Q_input
| std::complex<float> * SoDa::HilbertTransformer::fft_Q_input |
|
private |
◆ fft_Q_output
| std::complex<float> * SoDa::HilbertTransformer::fft_Q_output |
|
private |
◆ forward_I_plan
| fftwf_plan SoDa::HilbertTransformer::forward_I_plan |
|
private |
◆ forward_Q_plan
| fftwf_plan SoDa::HilbertTransformer::forward_Q_plan |
|
private |
◆ H_transform_gain
| float SoDa::HilbertTransformer::H_transform_gain |
|
private |
◆ HTl_filter
| std::complex<float>* SoDa::HilbertTransformer::HTl_filter |
|
private |
◆ HTu_filter
| std::complex<float>* SoDa::HilbertTransformer::HTu_filter |
|
private |
◆ ifft_I_input
| std::complex<float>* SoDa::HilbertTransformer::ifft_I_input |
|
private |
◆ ifft_I_output
| std::complex<float>* SoDa::HilbertTransformer::ifft_I_output |
|
private |
◆ ifft_Q_input
| std::complex<float> * SoDa::HilbertTransformer::ifft_Q_input |
|
private |
◆ ifft_Q_output
| std::complex<float> * SoDa::HilbertTransformer::ifft_Q_output |
|
private |
| unsigned int SoDa::HilbertTransformer::M |
|
private |
these are the salient dimensions for this Overlap/Save widget (for terminology, see Lyons pages 719ff
the input buffer length;
Definition at line 119 of file HilbertTransformer.hxx.
| unsigned int SoDa::HilbertTransformer::N |
|
private |
◆ Pass_L_filter
| std::complex<float>* SoDa::HilbertTransformer::Pass_L_filter |
|
private |
◆ Pass_U_filter
| std::complex<float>* SoDa::HilbertTransformer::Pass_U_filter |
|
private |
◆ passthrough_gain
| float SoDa::HilbertTransformer::passthrough_gain |
|
private |
| unsigned int SoDa::HilbertTransformer::Q |
|
private |
The documentation for this class was generated from the following file: