2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
/*! *************************************************************************************************
|
|
|
|
|
\ingroup DFT_GROUP
|
|
|
|
|
\fn int dft(double* x, int n, complex_t *y)
|
|
|
|
|
\brief Дискретное преобразование Фурье вещественного сигнала.
|
|
|
|
|
|
|
|
|
|
Функция рассчитывает \f$ n \f$-точечное дискретное преобразование Фурье
|
|
|
|
|
вещественного сигнала \f$ x(m) \f$, \f$ m = 0 \ldots n-1 \f$.<BR>
|
|
|
|
|
\f[
|
2018-03-14 21:00:30 +00:00
|
|
|
|
Y(k) = \sum_{m = 0}^{n-1} x(m) \cdot \exp \left( -j \cdot \frac{2\pi}{n} \cdot m \cdot k \right),
|
2018-03-13 20:46:25 +00:00
|
|
|
|
\f]
|
|
|
|
|
где \f$ k = 0 \ldots n-1 \f$.
|
|
|
|
|
|
|
|
|
|
\param[in] x Указатель на вектор вещественного входного сигнала \f$x(m)\f$,
|
2018-03-20 20:02:35 +00:00
|
|
|
|
\f$ m = 0 \ldots n-1 \f$. <BR>
|
|
|
|
|
Размер вектора `[n x 1]`. <BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
\param[in] n Размер ДПФ \f$n\f$ (размер векторов входного сигнала и результата ДПФ).<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] y Указатель на комплексный вектор результата ДПФ \f$Y(k)\f$,
|
2018-03-20 20:02:35 +00:00
|
|
|
|
\f$ k = 0 \ldots n-1 \f$. Размер вектора `[n x 1]`. <BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` если ДПФ рассчитана успешно. <BR>
|
2018-03-20 20:02:35 +00:00
|
|
|
|
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
|
|
|
|
|
|
|
|
|
|
Пример использования функции `dft`:
|
|
|
|
|
|
|
|
|
|
\include dft_test.c
|
|
|
|
|
|
|
|
|
|
Результат работы программы:
|
|
|
|
|
|
|
|
|
|
\verbatim
|
|
|
|
|
y[ 0] = 120.000 0.000
|
|
|
|
|
y[ 1] = -8.000 40.219
|
|
|
|
|
y[ 2] = -8.000 19.314
|
|
|
|
|
y[ 3] = -8.000 11.973
|
|
|
|
|
y[ 4] = -8.000 8.000
|
|
|
|
|
y[ 5] = -8.000 5.345
|
|
|
|
|
y[ 6] = -8.000 3.314
|
|
|
|
|
y[ 7] = -8.000 1.591
|
|
|
|
|
y[ 8] = -8.000 0.000
|
|
|
|
|
y[ 9] = -8.000 -1.591
|
|
|
|
|
y[10] = -8.000 -3.314
|
|
|
|
|
y[11] = -8.000 -5.345
|
|
|
|
|
y[12] = -8.000 -8.000
|
|
|
|
|
y[13] = -8.000 -11.973
|
|
|
|
|
y[14] = -8.000 -19.314
|
|
|
|
|
y[15] = -8.000 -40.219
|
|
|
|
|
\endverbatim
|
|
|
|
|
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
\author
|
|
|
|
|
Бахурин Сергей.
|
|
|
|
|
www.dsplib.org
|
|
|
|
|
\note
|
|
|
|
|
Данная функция выполняет расчет ДПФ наивным методом
|
|
|
|
|
и требует \f$ n^2 \f$ комплексных умножений.<BR>
|
|
|
|
|
Для увеличения скорости расчета рекомендуется
|
|
|
|
|
использовать алгоритмы быстрого преобразования Фурье.
|
|
|
|
|
|
|
|
|
|
**************************************************************************************************** */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*! *************************************************************************************************
|
|
|
|
|
\ingroup DFT_GROUP
|
|
|
|
|
\fn int dft_cmplx(complex_t* x, int n, complex_t *y)
|
|
|
|
|
\brief Дискретное преобразование Фурье комплексного сигнала.
|
|
|
|
|
|
|
|
|
|
Функция рассчитывает \f$ n \f$-точечное дискретное преобразование Фурье
|
|
|
|
|
комплексного сигнала \f$ x(m) \f$, \f$ m = 0 \ldots n-1 \f$.<BR>
|
|
|
|
|
\f[
|
2018-03-14 21:00:30 +00:00
|
|
|
|
Y(k) = \sum_{m = 0}^{n-1} x(m) \cdot \exp \left( -j \cdot \frac{2\pi}{n} \cdot m \cdot k \right),
|
2018-03-13 20:46:25 +00:00
|
|
|
|
\f]
|
|
|
|
|
где \f$ k = 0 \ldots n-1 \f$.
|
|
|
|
|
|
|
|
|
|
\param[in] x Указатель на вектор комплексного входного сигнала \f$x(m)\f$,
|
2018-03-20 20:02:35 +00:00
|
|
|
|
\f$ m = 0 \ldots n-1 \f$. <BR>
|
|
|
|
|
Размер вектора `[n x 1]`. <BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
\param[in] n Размер ДПФ \f$n\f$ (размер векторов входного сигнала и результата ДПФ).<BR><BR>
|
|
|
|
|
|
2018-03-20 20:02:35 +00:00
|
|
|
|
\param[out] y Указатель на комплексный вектор результата ДПФ \f$Y(k)\f$,
|
|
|
|
|
\f$ k = 0 \ldots n-1 \f$. Размер вектора `[n x 1]`. <BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` если ДПФ рассчитана успешно. <BR>
|
2018-03-20 20:02:35 +00:00
|
|
|
|
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
|
|
|
|
|
|
|
|
|
|
|
2018-04-07 12:17:30 +00:00
|
|
|
|
|
|
|
|
|
|
2018-03-20 20:02:35 +00:00
|
|
|
|
Пример использования функции `dft_cmplx`:
|
|
|
|
|
|
|
|
|
|
\include dft_cmplx_test.c
|
|
|
|
|
|
|
|
|
|
Результат работы программы:
|
|
|
|
|
|
|
|
|
|
\verbatim
|
|
|
|
|
y[ 0] = 120.000 0.000
|
|
|
|
|
y[ 1] = -8.000 40.219
|
|
|
|
|
y[ 2] = -8.000 19.314
|
|
|
|
|
y[ 3] = -8.000 11.973
|
|
|
|
|
y[ 4] = -8.000 8.000
|
|
|
|
|
y[ 5] = -8.000 5.345
|
|
|
|
|
y[ 6] = -8.000 3.314
|
|
|
|
|
y[ 7] = -8.000 1.591
|
|
|
|
|
y[ 8] = -8.000 0.000
|
|
|
|
|
y[ 9] = -8.000 -1.591
|
|
|
|
|
y[10] = -8.000 -3.314
|
|
|
|
|
y[11] = -8.000 -5.345
|
|
|
|
|
y[12] = -8.000 -8.000
|
|
|
|
|
y[13] = -8.000 -11.973
|
|
|
|
|
y[14] = -8.000 -19.314
|
|
|
|
|
y[15] = -8.000 -40.219
|
|
|
|
|
\endverbatim
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
\author
|
|
|
|
|
Бахурин Сергей.
|
|
|
|
|
www.dsplib.org
|
|
|
|
|
\note
|
|
|
|
|
Данная функция выполняет расчет ДПФ наивным методом
|
|
|
|
|
и требует \f$ n^2 \f$ комплексных умножений.<BR>
|
|
|
|
|
Для увеличения скорости расчета рекомендуется
|
|
|
|
|
использовать алгоритмы быстрого преобразования Фурье.
|
|
|
|
|
|
|
|
|
|
**************************************************************************************************** */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|