libdspl-2.0

Макросы

#define ABSSQR(x)   ((SQR(RE(x))) + (SQR(IM(x))))
 Макрос возвращает квадрат модуля комплексного числа x. Подробнее...
 
#define IM(x)   (x[1])
 Макрос определяющий мнимую часть комплексного числа. Подробнее...
 
#define RE(x)   (x[0])
 Макрос определяющий реальную часть комплексного числа. Подробнее...
 

Определения типов

typedef double complex_t[2]
 Описание комплексного типа данных. Подробнее...
 

Функции

int re2cmplx (double *x, int n, complex_t *y)
 Преобразование массива вещественных данных в массив комплексных данных. Подробнее...
 
int cmplx2re (complex_t *x, int n, double *re, double *im)
 Преобразование массива комплексных данных в два массива вещественных данных, содержащих реальную и мнимую части исходного массива Подробнее...
 

Подробное описание

В данной группе описаны типы данных библиотеки DSPL и методы их преобразования.

Макросы

#define ABSSQR (   x)    ((SQR(RE(x))) + (SQR(IM(x))))

Макрос возвращает квадрат модуля комплексного числа x.


Квадрата модуля комплексного числа $ x = a + j \cdot b $ равен:

\[ |x|^2 = x \cdot x^* = a^2 + b^2. \]

Например:

    1 complex_t z;
    2 double y;
    3 RE(z) =  1.0;
    4 IM(z) = -2.0;
    5 y = ABSSQR(z);               

Переменная z = 1-2j, где j - мнимая единица, а переменная y = 5.

#define IM (   x)    (x[1])

Макрос определяющий мнимую часть комплексного числа.


Например:

1 complex_t z;
2 RE(z) = 1.0;
3 IM(z) = -2.0;

Переменная z = 1-2j, где j - мнимая единица.

Аналогично, макрос можно использовать для получения мнимой части комплексного числа:

1 complex_t z = {3.0, -4.0};
2 double r;
3 r = IM(z);

В данном примере переменная z = 3-4i, а в переменой r будет храниться число -4.

#define RE (   x)    (x[0])

Макрос определяющий реальную часть комплексного числа.


Например:

1 complex_t z;
2 RE(z) = 1.0;
3 IM(z) = -2.0;

Переменная z = 1-2j, где j - мнимая единица.

Аналогично, макрос можно использовать для получения реальной части комплексного числа:

1 complex_t z = {3.0, -4.0};
2 double r;
3 r = RE(z);

В данном примере переменная z = 3-4i, а в переменой r будет храниться число 3.

Типы

complex_t

Описание комплексного типа данных.


Комплексный тип данных в библиотеке DSPL-2.0 определен как 
массив из двух элементов типа `double`.
При этом первый элемент массива определяет реальную часть 
комплексного числа, а второй - мнимую.

Например:
1 complex_t z;
2 z[0] = 1.0;
3 z[1] = -2.0;

Переменная z = 1-2j, где j - мнимая единица.

Для удобства работы с комплексными числами реализованы специальные макросы: RE, IM, ABSSQR

Функции

int cmplx2re ( complex_t x,
int  n,
double *  re,
double *  im 
)

Преобразование массива комплексных данных в два массива вещественных данных, содержащих реальную и мнимую части исходного массива


Функция заполняет реальные массивы re и im соответсвующими значениями ральной и мнимой частей исходного комплексного массива x.

Аргументы
[in]xУказатель на массв комплексных данных.
Размер массива [n x 1].

[in]nРазмер массивов входных и выходных данных.

[out]reУказатель на адрес массива реальной части данных.
Размер массива [n x 1].
Память должна быть выделена.

[out]imУказатель на адрес массива мнимой части данных.
Размер массива [n x 1].
Память должна быть выделена.

Возвращает
RES_OK если преобразование произведено успешно.
В противном случае код ошибки:

Например при выполнении следующего кода

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);

Элементам массивов re и im будут присвоены значения:

re[0] = 1.0; im[0] = 2.0;
re[1] = 3.0; im[1] = 4.0;
re[2] = 5.0; im[2] = 6.0;
Автор
Бахурин Сергей. www.dsplib.org
int re2cmplx ( double *  x,
int  n,
complex_t y 
)

Преобразование массива вещественных данных в массив комплексных данных.


Функция заполняет реальные части массива y данных соответсвующими значениями исходного вещественного массива x.

Аргументы
[in]xУказатель на массв вещественных данных.
Размер массива [n x 1].

[in]nРазмер массивов входных и выходных данных.

[out]yУказатель на адрес массива комплексных данных.
Размер массива [n x 1].
Память должна быть выделена.

Возвращает
RES_OK если преобразование произведено успешно.
В противном случае код ошибки:

Например при выполнении следующего кода

double x[3] = {1.0, 2.0, 3.0};
complex_t y[3];
re2cmplx(x, 3, y);

Значениям y будут присвоены значения:

    y[0] = 1+0j;
    y[1] = 2+0j;
    y[2] = 3+0j.
Автор
Бахурин Сергей. www.dsplib.org