libdspl2.0
Digital Signal Processing Algorithm Library

Macros  
#define  RE(x) (x[0]) 
Macro sets real part of the complex number. More...  
#define  IM(x) (x[1]) 
Macro sets imaginary part of the complex number. More...  
#define  ABSSQR(x) ((SQR(RE(x))) + (SQR(IM(x)))) 
The macro returns the square of the modulus of a complex number x . More...  
Typedefs  
typedef double  complex_t[2] 
Complex data type. More...  
Functions  
int DSPL_API  cmplx2re (complex_t *x, int n, double *re, double *im) 
Separate complex vector to the real and image vectors. More...  
int DSPL_API  re2cmplx (double *x, int n, complex_t *y) 
Convert real array to the complex array. More...  
Detailed Description
This group describes DSPL2.0 data types and functions and macros for data types conversion.
Macro Definition Documentation
◆ ABSSQR
The macro returns the square of the modulus of a complex number x
.
Square of the modulus of a complex number \( x = a + j b \) equals:
\[ x^2 = x x^* = a^2 + b^2. \]
Example:
Variable z = 12j
, here j
 imaginary unit, but variable y = 5
.
◆ IM
#define IM  (  x  )  (x[1]) 
Macro sets imaginary part of the complex number.
Example:
Variable z = 12j
, here j
 imaginary unit.
This macro can be used to return imaginary part of the complex number:
In this example z = 34i
, but variable r
will keep 4.
◆ RE
#define RE  (  x  )  (x[0]) 
Macro sets real part of the complex number.
Example:
Variable z = 12j
, here j
 imaginary unit.
This macro can be used to return real part of the complex number:
In this example z = 34i
, but variable r
will keep 3.
Typedef Documentation
◆ complex_t
complex_t 
Complex data type.
libdspl2.0 describes complex numbers data type as an array of two double
elements. First element sets real part, second — imaginary part.
For example:
Variable z = 12j
, here j
 imaginary unit.
For the convenience of working with complex numbers implemented special macros: RE, IM, ABSSQR
Function Documentation
◆ cmplx2re()
int cmplx2re  (  complex_t *  x, 
int  n,  
double *  re,  
double *  im  
) 
Separate complex vector to the real and image vectors.
Function fills re
and im
vectors corresponds to real and image parts of the input complex array x
.
 Parameters

[in] x
Pointer to the real complex vector.
Vector size is[n x 1]
.
[in] n
Size of the input complex vectorx
and real and image vectorsre
andim
.
[out] re
Pointer to the real part vector.
Vector size is[n x 1]
.
Memory must be allocated.
[out] im
Pointer to the image part vector.
Vector size is[n x 1]
.
Memory must be allocated.
 Returns
RES_OK
if function converts complex vector successfully.
Else code error.
Example:
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};double re[3], im[3];cmplx2re(x, 3, re, im);int DSPL_API cmplx2re(complex_t *x, int n, double *re, double *im)Separate complex vector to the real and image vectors.Definition: cmplx2re.c:130
Vectors re
and im
will contains:
re[0] = 1.0; im[0] = 2.0; re[1] = 3.0; im[1] = 4.0; re[2] = 5.0; im[2] = 6.0;
Definition at line 130 of file cmplx2re.c.
Referenced by conv_fft(), and xcorr().
◆ re2cmplx()
int re2cmplx  (  double *  x, 
int  n,  
complex_t *  y  
) 
Convert real array to the complex array.
Function copies the vector x
to the real part of vector y
. Image part of the vector y
sets as zero.
So complex vector contains data:
y[i] = x[i] + j0, here i = 0,1,2 ... n1
 Parameters

[in] x Pointer to the real vector x
.
Vector size is[n x 1]
.
[in] n Size of the real vector x
and complex vectory
.
[out] y Pointer to the complex vector y
.
Vector size is[n x 1]
.
Memory must be allocated.
 Returns
RES_OK
if function returns successfully.
Else code error:
Example:double x[3] = {1.0, 2.0, 3.0};complex_t y[3];re2cmplx(x, 3, y);int DSPL_API re2cmplx(double *x, int n, complex_t *y)Convert real array to the complex array.Definition: re2cmplx.c:120
Vector y
will keep:
y[0] = 1+0j; y[1] = 2+0j; y[2] = 3+0j.
Definition at line 120 of file re2cmplx.c.
Referenced by conv_fft(), fft(), freqs(), freqz(), and xcorr().
Generated on Wed Jan 5 2022 12:44:37 for libdspl2.0 by 1.9.2