libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
Функции математической статистики

Функции

int xcorr_cmplx (complex_t *x, int nx, complex_t *y, int ny, int flag, int nr, complex_t *r, double *t)
 Оценка вектора взаимной корреляции для дискретных комплексных последовательностей x и y. Подробнее...
 
int find_max_abs (double *a, int n, double *m, int *ind)
 Поиск максимального по модулю элемента вещественного вектора a Подробнее...
 
int mean (double *x, int n, double *m)
 Выборочная оценка математического ожидания вещественного вектора x Подробнее...
 
int mean_cmplx (complex_t *x, int n, complex_t *m)
 Выборочная оценка математического ожидания комплексного вектора x Подробнее...
 
int stat_std (double *x, int n, double *s)
 Выборочная оценка стандартного отклонения вещественного вектора x Подробнее...
 
int stat_std_cmplx (complex_t *x, int n, double *s)
 Выборочная оценка стандартного отклонения комплексного вектора x Подробнее...
 
int xcorr (double *x, int nx, double *y, int ny, int flag, int nr, double *r, double *t)
 Оценка вектора взаимной корреляции для дискретных вещественных последовательностей x и y. Подробнее...
 

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

Функции

◆ find_max_abs()

int find_max_abs ( double *  a,
int  n,
double *  m,
int *  ind 
)

Поиск максимального по модулю элемента вещественного вектора a


Функция производит поиск максимального по модулю значения вектора a.
Максимальное по модулю значение max|a[k]| сохраняется по адресу m, а индекс данного значения в векторе a сохраняется по адресу ind.

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

[in]nРазмер входного вектора a.

[out]mУказатель на адрес памяти, в который сохранить максимальное по модулю значение вектора a.
Указатель может быть NULL, в этом случае максимальное по модулю значение не сохраняется.

[out]indУказатель на переменную, в которую будет сохранен индекс максимального по модулю значению вектора a.
Указатель может быть NULL, в этом случае индекс не возвращается.

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

Пример:

double a[5] = {0.0, 2.0, -5.0, 4.0, 2.0};
double m;
int ind;
find_max_abs(a, 5, &m, &ind);
printf("\n\nmax absolute value: %8.1f (index %d)", m, ind);
int find_max_abs(double *a, int n, double *m, int *ind)
Поиск максимального по модулю элемента вещественного вектора a
Definition: find_max_abs.c:121

В результате в переменную m будет записано значение 5, а в переменную ind значение 2.

Автор
Бахурин Сергей. www.dsplib.org

См. определение в файле find_max_abs.c строка 121

◆ mean()

int mean ( double *  x,
int  n,
double *  m 
)

Выборочная оценка математического ожидания вещественного вектора x


Функция рассчитывает оценку математического ожидания

\[ m = \frac{1}{n} \sum_{i = 0}^{n-1} x(i) \]

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

[in]nРазмер входного вектора x.

[out]mУказатель на адрес памяти, в который сохранить рассчитанное значение математического ожидания вектора x.
Память должна быть выделена.

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

Пример:

double a[5] = {0.0, 1.0, 2.0, 3.0, 4.0};
double m;
mean(a, 5, &m);
printf("\n\n Mean value: %8.1f\n", m);
int mean(double *x, int n, double *m)
Выборочная оценка математического ожидания вещественного вектора x
Definition: mean.c:105

В результате в переменную m будет записано значение 2.

Автор
Бахурин Сергей. www.dsplib.org

См. определение в файле mean.c строка 105

Используется в stat_std().

◆ mean_cmplx()

int mean_cmplx ( complex_t x,
int  n,
complex_t m 
)

Выборочная оценка математического ожидания комплексного вектора x


Функция рассчитывает оценку математического ожидания

\[ m = \frac{1}{n} \sum_{i = 0}^{n-1} x(i) \]

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

[in]nРазмер входного вектора x.

[out]mУказатель на адрес памяти, в который сохранить рассчитанное значение математического ожидания вектора x.
Память должна быть выделена.

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

Пример:

complex_t a[3] = {{0.0, -1.0}, {1.0, 2.0}, {3.0, 5.0}};
mean_cmplx(a, 3, &m);
printf("\n\n Mean value: %8.1f%+3.1fj\n", RE(m), IM(m));
int mean_cmplx(complex_t *x, int n, complex_t *m)
Выборочная оценка математического ожидания комплексного вектора x
Definition: mean_cmplx.c:108
#define RE(x)
Макрос определяющий реальную часть комплексного числа.
Definition: dspl.h:420
double complex_t[2]
Описание комплексного типа данных.
Definition: dspl.h:86
#define IM(x)
Макрос определяющий мнимую часть комплексного числа.
Definition: dspl.h:478

В результате в переменную m будет записано значение 1 + 3j.

Автор
Бахурин Сергей. www.dsplib.org

См. определение в файле mean_cmplx.c строка 108

Используется в stat_std_cmplx().

◆ stat_std()

int stat_std ( double *  x,
int  n,
double *  s 
)

Выборочная оценка стандартного отклонения вещественного вектора x


Функция рассчитывает оценку стандартного отклонения

\[ s = \sqrt{\frac{1}{n-1} \sum_{i = 0}^{n-1} \big(x(i) - \mu \big)^2}, \]

где \(\mu\) - выборочная оценка математического ожидания вектора x:

\[ \mu = \frac{1}{n} \sum_{i = 0}^{n-1} x(i). \]

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

[in]nРазмер входного вектора x.

[out]sУказатель на адрес памяти, в который сохранить рассчитанное значение стандартного отклонения вектора x.
Память должна быть выделена.

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

Пример:

double a[5] = {0.0, 1.0, 2.0, 3.0, 4.0};
double s;
stat_std(a, 5, &s);
printf("\n\n Standard deviation value: %8.1f\n", s);
int stat_std(double *x, int n, double *s)
Выборочная оценка стандартного отклонения вещественного вектора x
Definition: stat_std.c:116

В результате в переменную s будет записано значение 1.5811.

Автор
Бахурин Сергей. www.dsplib.org

См. определение в файле stat_std.c строка 116

◆ stat_std_cmplx()

int stat_std_cmplx ( complex_t x,
int  n,
double *  s 
)

Выборочная оценка стандартного отклонения комплексного вектора x


Функция рассчитывает оценку стандартного отклонения

\[ s = \sqrt{\frac{1}{n-1} \sum_{i = 0}^{n-1} \big|x(i) - \mu \big|^2}, \]

где \(\mu\) - выборочная оценка математического ожидания вектора x:

\[ \mu = \frac{1}{n} \sum_{i = 0}^{n-1} x(i). \]

Заметки
Для комплексного вектора данных, величина стандартного отклонения всегда вещественная и неотрицательная.
Аргументы
[in]xУказатель на комплексный вектор x.
Размер вектора [n x 1].

[in]nРазмер входного вектора x.

[out]sУказатель на адрес памяти, в который сохранить рассчитанное значение стандартного отклонения вектора x.
Память должна быть выделена.

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

Пример:

complex_t a[3] = {{0.0, -1.0}, {1.0, 2.0}, {3.0, 5.0}};
double s;
stat_std_cmplx(a, 3, &s);
printf("\n\n Standard deviation value: %8.1f\n", s);
int stat_std_cmplx(complex_t *x, int n, double *s)
Выборочная оценка стандартного отклонения комплексного вектора x

В результате в переменную s будет записано значение 3.3665.

Автор
Бахурин Сергей. www.dsplib.org

См. определение в файле stat_std_cmplx.c строка 113

◆ xcorr()

int xcorr ( double *  x,
int  nx,
double *  y,
int  ny,
int  flag,
int  nr,
double *  r,
double *  t 
)

Оценка вектора взаимной корреляции для дискретных вещественных последовательностей x и y.


Функция производит оценку вектора взаимной корреляции \(\widehat{r}_{xy}(k)\) для векторов x и y или вектора автокорреляции \(\widehat{r}_{xx}(k)\) если \(x = y \).

Несмещенная оценка вектора взаимной корреляции:

\[ \widehat{r}_{xy}(k) = \frac{1}{N-k} \sum\limits_{n = 0}^{N-k-1} x(n+k)y^*(n), \qquad 0 \leq k <N; \]

\[ \widehat{r}_{xy}(k) = \frac{1}{N+k} \sum\limits_{n = 0}^{N+k-1} y^*(n-k)x(n), \qquad -N < k < 0. \]

где \( N = \max(n_x, n_y) \).

Данная функция использует алгоритм FFT для вычислительной эффективности оценки:

\[ \breve{r}_{xy}(k) = \operatorname{IFFT}\Big[ \operatorname{FFT}\big[ \mathbf{x} \big] \operatorname{FFT}^*\big[ \mathbf{y} \big] \Big] \]

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

[in]nxРазмер вектора первой дискретной последовательности x.

[in]yУказатель на вторую дискретную последовательность y.
Размер вектора [ny x 1].

[in]nyРазмер вектора второй дискретной последовательности y.

[in]flagФлаг задает способ масштабирования выходного корреляционного вектора \(\breve{r}_{xy}(k)\).
Может принимать одно из следующих значений:
DSPL_XCORR_NOSCALE немасштабированный выход алгоритма IFFT \(\breve{r}_{xy}(k)\);
DSPL_XCORR_BIASED Смещенная оценка \(\breve{r}_{xy}(k)/N \);
DSPL_XCORR_UNBIASED Несмещенная оценка \(\widehat{r}_{xy}(k) = \frac{\breve{r}_{xy}(k)}{N-|k|} \);

[in]nrДиапазон оценки вектора корреляции относительно нуля.
Вектор \(\widehat{r}_{xy}(k)\) рассчитывается для значений аргумента \( k= -n_r,\,\, -n_r +1, \ldots n_r\).

[out]rУказатель на масштабированный вектор взаимной корреляции.
Размер вектора [(2*nr+1) x 1].
Память должна быть выделена.

[out]tУказатель на значения аргумента вектора взаимной корреляции
\( k= -n_r,\,\, -n_r +1, \ldors n_r\).
Размер вектора [(2*nr+1) x 1].
Указатель может быть NULL. В этом случае значения аргумента не возвращаются.

Возвращает
RES_OK Если функция рассчитана успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле xcorr.c строка 214

◆ xcorr_cmplx()

int xcorr_cmplx ( complex_t x,
int  nx,
complex_t y,
int  ny,
int  flag,
int  nr,
complex_t r,
double *  t 
)

Оценка вектора взаимной корреляции для дискретных комплексных последовательностей x и y.


int xcorr_cmplx(complex_t* x, int nx, complex_t* y, int ny, int flag, int nr, complex_t* r, double* t)

Функция производит оценку вектора взаимной корреляции \(\widehat{r}_{xy}(k)\) для векторов x и y или вектора автокорреляции \(\widehat{r}_{xx}(k)\) если \(x = y \).

Несмещенная оценка вектора взаимной корреляции:

\[ \widehat{r}_{xy}(k) = \frac{1}{N-k} \sum\limits_{n = 0}^{N-k-1} x(n+k)y^*(n), \qquad 0 \leq k <N; \]

\[ \widehat{r}_{xy}(k) = \frac{1}{N+k} \sum\limits_{n = 0}^{N+k-1} y^*(n-k)x(n), \qquad -N < k < 0. \]

где \( N = \max(n_x, n_y) \).

Данная функция использует алгоритм FFT для вычислительной эффективности оценки:

\[ \breve{r}_{xy}(k) = \operatorname{IFFT}\Big[ \operatorname{FFT}\big[ \mathbf{x} \big] \operatorname{FFT}^*\big[ \mathbf{y} \big] \Big] \]

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

[in]nxРазмер вектора первой дискретной последовательности x.

[in]yУказатель на вторую дискретную последовательность y.
Размер вектора [ny x 1].

[in]nyРазмер вектора второй дискретной последовательности y.

[in]flagФлаг задает способ масштабирования выходного корреляционного вектора \(\breve{r}_{xy}(k)\).
Может принимать одно из следующих значений:
DSPL_XCORR_NOSCALE немасштабированный выход алгоритма IFFT \(\breve{r}_{xy}(k)\);
DSPL_XCORR_BIASED Смещенная оценка \(\breve{r}_{xy}(k)/N \);
DSPL_XCORR_UNBIASED Несмещенная оценка \(\widehat{r}_{xy}(k) = \frac{\breve{r}_{xy}(k)}{N-|k|} \);

[in]nrДиапазон оценки вектора корреляции относительно нуля.
Вектор \(\widehat{r}_{xy}(k)\) рассчитывается для значений аргумента \( k= -n_r,\,\, -n_r +1, \ldots n_r\).

[out]rУказатель на масштабированный вектор взаимной корреляции.
Размер вектора [(2*nr+1) x 1].
Память должна быть выделена.

[out]tУказатель на значения аргумента вектора взаимной корреляции
\( k= -n_r,\,\, -n_r +1, \ldors n_r\).
Размер вектора [(2*nr+1) x 1].
Указатель может быть NULL. В этом случае значения аргумента не возвращаются.

Возвращает
RES_OK Если функция рассчитана успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле xcorr.c строка 449