libdspl-2.0/dspl/dox/ru/array.dox

161 wiersze
7.1 KiB
Plaintext
Czysty Wina Historia

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*! ****************************************************************************
\ingroup SPEC_MATH_COMMON_GROUP
\fn int concat(void* a, size_t na, void* b, size_t nb, void* c)
\brief Конкатенация двух массивов данных
Функция производит конкатенацию двух массивов. Пусть массивы `a` и `b`
заданы как векторы:<BR>
`a = [a(0), a(1), ... a(na-1)]`, <BR>
`b = [b(0), b(1), ... b(nb-1)]`, <BR>
тогда результатом конкатенации будет вектор размера `na+nb` вида:<BR>
`c = [a(0), a(1), ... a(na-1), b(0), b(1), ... b(nb-1)]`.
\param[in] a Указатель на первый вектор `a`.<BR>
Размер вектора `na` байт.<BR><BR>
\param[in] na Размер первого вектора `a` в байт.<BR><BR>
\param[in] b Указатель на второй вектор `b`.<BR>
Размер памяти вектора `nb` байт.<BR><BR>
\param[in] nb Размер второго вектора `b` в байт.<BR><BR>
\param[out] c Указатель на вектор конкатенации `c`.<BR>
Размер памяти вектора `na + nb` байт.<BR>
Память должна быть выделена.<BR><BR>
\return
`RES_OK` если функция выполнена успешно.<BR>
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
Функция использует указатели типа `void*` и может быть использована для
конкатенации данных различного типа.<BR>
Например конкатенация массивов типа `double`:
\code
double a[3] = {1.0, 2.0, 3.0};
double b[2] = {4.0, 5.0};
double c[5];
concat((void*)a, 3*sizeof(double), (void*)b, 2*sizeof(double), (void*)c);
\endcode
в результате вектор `c` будет хранить массив данных:
\code
c = [1.0, 2.0, 3.0, 4.0, 5.0]
\endcode
\author
Бахурин Сергей
www.dsplib.org
**************************************************************************** */
/*! ****************************************************************************
\ingroup SPEC_MATH_COMMON_GROUP
\fn int decimate(double* x, int n, int d, double* y, int* cnt)
\brief Децимация вещественного вектора данных
Функция производит децимацию вещественного вектора `x` в `d` раз.<BR>
В результате выходной вектор `y` содержит значения:
`y(k) = x(k*d), k = 0...n/d-1`<BR>
\param[in] x Указатель на вектор входных данных `x`.<BR>
Размер вектора `[n x 1]`.<BR><BR>
\param[in] n Размер входного вектора `x`.<BR><BR>
\param[in] d Коэффициент децимации.<BR>
В результате децимации из вектора `x` будет взять каждый
d-й элемент.<BR><BR>
\param[out] y Указатель на децимированный вектор `y`.<BR>
Размер выходного вектора равен `[n/d x 1]`
будет сохранен по адресу `cnt`.<BR>
Память должна быть выделена.<BR><BR>
\param[out] cnt Указатель переменную, в которую будет сохранен
размер выходного вектора после децимации.<BR>
Указатель может быть `NULL`, в этом случае
размер вектора `y` не возвращается.<BR><BR>
\return
`RES_OK` если функция выполнена успешно.<BR>
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
Пример децимации вещественного массива данных в 2 раза:
\code
double x[10] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
double y[5];
int d = 2;
int cnt;
decimate(x, 10, d, y, &cnt);
\endcode
в результате в переменную `cnt` будет записан размер 5,
а вектор `y` будет хранить массив данных:
\code
c = [0.0, 2.0, 4.0, 6.0, 8.0]
\endcode
\author Бахурин Сергей www.dsplib.org
**************************************************************************** */
/*! ****************************************************************************
\ingroup SPEC_MATH_COMMON_GROUP
\fn int decimate_cmplx(complex_t* x, int n, int d, complex_t* y, int* cnt)
\brief Децимация комплексного вектора данных
Функция производит децимацию комплексного вектора `x` в `d` раз.<BR>
В результате выходной вектор `y` содержит значения:
`y(k) = x(k*d), k = 0...n/d-1`<BR>
\param[in] x Указатель на вектор входных данных `x`.<BR>
Размер вектора `[n x 1]`.<BR><BR>
\param[in] n Размер входного вектора `x`.<BR><BR>
\param[in] d Коэффициент децимации.<BR>
В результате децимации из вектора `x` будет взять каждый
d-й элемент.<BR><BR>
\param[out] y Указатель на децимированный вектор `y`.<BR>
Размер выходного вектора равен `[n/d x 1]`
будет сохранен по адресу `cnt`.<BR>
Память должна быть выделена.<BR><BR>
\param[out] cnt Указатель переменную, в которую будет сохранен
размер выходного вектора после децимации.<BR>
Указатель может быть `NULL`, в этом случае
размер вектора `y` не возвращается.<BR><BR>
\return
`RES_OK` если функция выполнена успешно.<BR>
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
Пример децимации комплексного массива данных в 2 раза:
\code
compex_t x[10] = {{0.0, 0.0}, {1.0, 1.0}, {2.0, 2.0}, {3.0, 3.0}, {4.0, 4.0},
{5.0, 5.0}, {6.0, 6.0}, {7.0, 7.0}, {8.0, 8.0}, {9.0, 9.0}};
compex_t y[5];
int d = 2;
int cnt;
decimate_cmplx(x, 10, d, y, &cnt);
\endcode
в результате в переменную `cnt` будет записан размер 5,
а вектор `y` будет хранить массив данных:
\code
c = [0.0+0.0j, 2.0+2.0j, 4.0+4.0j, 6.0+6.0j, 8.0+8.0j]
\endcode
\author Бахурин Сергей www.dsplib.org
**************************************************************************** */