GNU Radio Manual and C++ API Reference  3.7.7
The Free & Open Software Radio Ecosystem
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages

Overview

Deinterleaves the complex floating point vector and return the imaginary part (quadrature) of the samples.

Dispatcher Prototype

void volk_32fc_deinterleave_image_32f(float* qBuffer, const lv_32fc_t* complexVector, unsigned int num_points)

Inputs

  • complexVector: The complex input vector.
  • num_points: The number of complex data values to be deinterleaved.

Outputs

  • qBuffer: The Q buffer output data.

Example Generate complex numbers around the top half of the unit circle and extract all of the imaginary parts to a float buffer.

int N = 10;
unsigned int alignment = volk_get_alignment();
lv_32fc_t* in = (lv_32fc_t*)volk_malloc(sizeof(lv_32fc_t)*N, alignment);
float* im = (float*)volk_malloc(sizeof(float)*N, alignment);
for(unsigned int ii = 0; ii < N; ++ii){
float real = 2.f * ((float)ii / (float)N) - 1.f;
float imag = std::sqrt(1.f - real * real);
in[ii] = lv_cmake(real, imag);
}
printf(" imaginary part\n");
for(unsigned int ii = 0; ii < N; ++ii){
printf("out(%i) = %+.1f\n", ii, im[ii]);
}