kopia lustrzana https://github.com/Dsplib/libdspl-2.0
134 wiersze
5.1 KiB
Plaintext
134 wiersze
5.1 KiB
Plaintext
/*! ****************************************************************************
|
||
\ingroup DFT_GROUP
|
||
\fn int fourier_series_dec(double* t, double* s, int nt, double period,
|
||
int nw, double* w, complex_t* y)
|
||
|
||
\brief
|
||
Расчет коэффициентов разложения в ряд Фурье
|
||
|
||
Функция рассчитывает спектр периодического сигнала при усечении ряда Фурье \n
|
||
|
||
|
||
\param[in] t
|
||
Указатель на массив моментов времени дискретизации исходного сигнала `s`. \n
|
||
Размер вектора вектора `[nt x 1]`. \n
|
||
Память должна быть выделена. \n
|
||
\n
|
||
|
||
\param[in] s
|
||
Указатель на массив значений исходного сигнала`s`. \n
|
||
Размер вектора `[nt x 1]`. \n
|
||
Память должна быть выделена. \n
|
||
\n
|
||
|
||
|
||
\param[in] nt
|
||
Размер выборки исходного сигнала. \n
|
||
Значение должно быть положительным. \n
|
||
\n
|
||
|
||
\param[in] period
|
||
Период повторения сигнала. \n
|
||
\n
|
||
|
||
\param[in] nw
|
||
Размер усеченного ряда Фурье. \n
|
||
\n
|
||
|
||
\param[out] w
|
||
Указатель на массив частот спектра периодического сигнала. \n
|
||
Размер вектора `[nw x 1]`. \n
|
||
Память должна быть выделена. \n
|
||
\n
|
||
|
||
\param[out] y
|
||
Указатель массив комплексных значений спектра периодического сигнала. \n
|
||
Размер вектора `[nw x 1]`. \n
|
||
Память должна быть выделена. \n
|
||
\n
|
||
|
||
\return
|
||
`RES_OK` --- коэффициенты ряда Фурье рассчитаны успешно. \n
|
||
В противном случае \ref ERROR_CODE_GROUP "код ошибки". \n
|
||
|
||
\note
|
||
Для расчета спектра сигнала используется численное интегрирование
|
||
исходного сигнала методом трапеций. Данная функция не является
|
||
эффективной. Для увеличения скорости расчета спектра сигнала
|
||
целесообразнее использовать алгоритмы дискретного
|
||
и быстрого преобразования Фурье.
|
||
\n
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
***************************************************************************** */
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*! ****************************************************************************
|
||
\ingroup DFT_GROUP
|
||
\fn int fourier_series_rec(double* w, complex_t* s, int nw,
|
||
double* t, int nt, complex_t* y)
|
||
\brief Восстановление сигнала при усечении ряда Фурье
|
||
|
||
Функция рассчитывает восстановленный сигнал при усечении ряда Фурье:
|
||
|
||
\f[
|
||
s(t) = \sum\limits_{n = 0}^{n_{\omega}-1} S(\omega_n) \exp(j\omega_n t)
|
||
\f]
|
||
|
||
\param[in] w
|
||
Указатель на массив частот \f$\omega_n\f$ усеченного ряда Фурье. \n
|
||
Размер вектора `[nw x 1]`. \n
|
||
Память должна быть выделена и заполнена. \n
|
||
\n
|
||
|
||
\param[in] s
|
||
Указатель на массив значений спектра \f$S(\omega_n)\f$. \n
|
||
Размер вектора `[nw x 1]`. \n
|
||
Память должна быть выделена и заполнена. \n
|
||
\n
|
||
|
||
|
||
\param[in] nw
|
||
Количество членов усеченного ряда Фурье. \n
|
||
Значение должно быть положительным. \n
|
||
\n
|
||
|
||
\param[in] t Указатель на массив временных отсчетов
|
||
восстановленного сигнала. \n
|
||
Размер вектора `[nt x 1]`. \n
|
||
Память должна быть выделена и заполнена. \n
|
||
\n
|
||
|
||
\param[in] nt
|
||
Размер вектора времени и восстановленного сигнала. \n
|
||
\n
|
||
|
||
\param[out] y
|
||
Указатель на массив восстановленного сигнала. \n
|
||
Размер вектора `[nt x 1]`. \n
|
||
Память должна быть выделена. \n
|
||
\n
|
||
|
||
\return
|
||
`RES_OK` --- восстановление сигнала прошло успешно. \n
|
||
В противном случае \ref ERROR_CODE_GROUP "код ошибки". \n
|
||
|
||
\note
|
||
Выходной восстановленный сигнал в общем случае является комплексным.
|
||
Однако при соблюдении свойств симметрии векторов `w` и `s` относительно
|
||
нулевой частоты получим мнимую часть элементов вектора `y` на уровне ошибок
|
||
округления числа с двойной точностью. Ничтожно малую мнимую часть в этом случае
|
||
можно игнорировать.
|
||
\n
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
***************************************************************************** */
|