|
libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
|
27 int xcorr_fft_size(
int nx,
int ny,
int* pnfft,
int* pndata);
32 int flag,
int nr,
complex_t* r,
double* t);
34 int xcorr_scale_cmplx(
complex_t* x,
int nd,
int flag);
38 #ifdef DOXYGEN_ENGLISH
125 #ifdef DOXYGEN_RUSSIAN
212 int DSPL_API
xcorr(
double* x,
int nx,
double* y,
int ny,
213 int flag,
int nr,
double* r,
double* t)
249 err = xcorr_krn(cx, nx, cy, ny, &
fft, flag, nr, cr, t);
253 err =
cmplx2re(cr, 2*nr+1, r, NULL);
271 #ifdef DOXYGEN_ENGLISH
358 #ifdef DOXYGEN_RUSSIAN
446 int flag,
int nr,
complex_t* r,
double* t)
450 err = xcorr_krn(x, nx, y, ny, &
fft, flag, nr, r, t);
458 #ifdef DOXYGEN_ENGLISH
461 #ifdef DOXYGEN_RUSSIAN
473 memcpy(r, x+nd-1-nr, (2*nr+1)*
sizeof(
complex_t));
476 memset(r, 0, (2*nr+1) *
sizeof(
complex_t));
477 memcpy(r + nr - nd + 1, x, (2*nd-1)*
sizeof(
complex_t));
480 for(i = 0; i < 2*nr+1; i++)
481 t[i] = (
double)i - (double)nr;
489 #ifdef DOXYGEN_ENGLISH
492 #ifdef DOXYGEN_RUSSIAN
496 int flag,
int nr,
complex_t* r,
double* t)
510 if(nx < 1 || ny < 1 || nr < 1)
513 err = xcorr_fft_size(nx, ny, &nfft, &ndata);
563 memcpy(px + ndata - 1, x, nx *
sizeof(
complex_t));
574 for(i = 0; i < nfft; i++)
576 RE(pC[i]) = CMCONJRE(pX[i], pY[i]);
577 IM(pC[i]) = CMCONJIM(pX[i], pY[i]);
584 err = xcorr_scale_cmplx(pc, ndata, flag);
588 err = xcorr_get_lag_cmplx(pc, ndata, nr, r, t);
609 #ifdef DOXYGEN_ENGLISH
633 #ifdef DOXYGEN_RUSSIAN
658 int xcorr_fft_size(
int nx,
int ny,
int* pnfft,
int* pndata)
660 int nfft, nfft2, r2, dnfft;
664 if(!pnfft || !pndata)
685 dnfft = 1 << (r2 - 3);
686 while(((1 << r2) + dnfft) < nfft)
688 nfft = (1 << r2) + dnfft;
699 #ifdef DOXYGEN_ENGLISH
702 #ifdef DOXYGEN_RUSSIAN
705 int xcorr_scale_cmplx(
complex_t* x,
int nd,
int flag)
716 case DSPL_XCORR_NOSCALE:
718 case DSPL_XCORR_BIASED:
719 for(i = 0; i < 2 * nd - 1; i++)
721 w = 1.0 / (double)nd;
726 case DSPL_XCORR_UNBIASED:
727 for(i = 1; i < 2 * nd - 1; i++)
729 w = 1.0 / ((double)nd - fabs((
double)(i - nd)));
735 return ERROR_XCORR_FLAG;
#define RE(x)
Макрос определяющий реальную часть комплексного числа.
#define ERROR_PTR
Ошибка указателя. Данная ошибка означает, что один из обязательных указателей (память под который дол...
#define ERROR_SIZE
Ошибка при передаче размера массива. Данная ошибка возникает когда помимо указателя на массив входных...
int fft_cmplx(complex_t *x, int n, fft_t *pfft, complex_t *y)
Быстрое преобразование Фурье комплексного сигнала
int ifft_cmplx(complex_t *x, int n, fft_t *pfft, complex_t *y)
Обратное быстрое преобразование Фурье
void fft_free(fft_t *pfft)
Очистить структуру fft_t алгоритма БПФ
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(double *x, int nx, double *y, int ny, int flag, int nr, double *r, double *t)
Оценка вектора взаимной корреляции для дискретных вещественных последовательностей x и y.
Структура данных объекта быстрого преобразования Фурье
int fft(double *x, int n, fft_t *pfft, complex_t *y)
Быстрое преобразование Фурье вещественного сигнала
int re2cmplx(double *x, int n, complex_t *y)
Преобразование массива вещественных данных в массив комплексных данных.
int cmplx2re(complex_t *x, int n, double *re, double *im)
Преобразование массива комплексных данных в два массива вещественных данных, содержащих реальную и мн...
double complex_t[2]
Описание комплексного типа данных.
#define RES_OK
Функция завершилась корректно. Ошибки отсутствуют.
#define IM(x)
Макрос определяющий мнимую часть комплексного числа.
#define ERROR_MALLOC
Ошибка динамического выделения памяти. Данная ошибка означает, что при динамическом выделении памяти ...