kopia lustrzana https://github.com/Dsplib/libdspl-2.0
128 wiersze
5.3 KiB
Plaintext
128 wiersze
5.3 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 Расчет коэффициентов разложения в ряд Фурье
|
||
|
||
Функция рассчитывает спектр периодического сигнала при усечении ряда Фурье<BR>
|
||
|
||
|
||
\param[in] t Указатель на массив моментов времени дискретизации
|
||
исходного сигнала `s`<BR>
|
||
размер вектора вектора `[nt x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[in] s Указатель на массив значений исходного сигнала`s`<BR>
|
||
размер вектора вектора `[nt x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
|
||
\param[in] nt размер выборки исходного сигнала.<BR>
|
||
Значение должно быть положительным.<BR><BR>
|
||
|
||
\param[in] period Период повторения сигнала.<BR><BR>
|
||
|
||
\param[in] nw Размер усеченного ряда Фурье.<BR><BR>
|
||
|
||
\param[out] w Указатель на массив частот спектра
|
||
периодического сигнала.<BR>
|
||
Размер вектора `[nw x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\param[out] y Указатель массив комплексных значений спектра
|
||
периодического сигнала.<BR>
|
||
Размер вектора `[nw x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\return
|
||
`RES_OK` Массивы нулей и полюсов рассчитаны успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
|
||
|
||
|
||
|
||
\note
|
||
Для расчета спектра сигнала используется численное интегрирование
|
||
исходного сигнала методом трапеций. Данная функция не является
|
||
эффективной. Для увеличения скорости расчета спектра сигнала
|
||
целесообразнее использовать алгоритмы дискретного
|
||
и быстрого преобразования Фурье.
|
||
<BR>
|
||
|
||
\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$
|
||
усеченного ряда Фурье.<BR>
|
||
Размер вектора `[nw x 1]`.<BR>
|
||
Память должна быть выделена и заполнена.<BR><BR>
|
||
|
||
\param[in] s Указатель на массив значений спектра
|
||
\f$S(\omega_n)\f$.<BR>
|
||
Размер вектора `[nw x 1]`.<BR>
|
||
Память должна быть выделена и заполнена.<BR><BR>
|
||
|
||
|
||
\param[in] nw Количество членов усеченного ряда Фурье.<BR>
|
||
Значение должно быть положительным.<BR><BR>
|
||
|
||
\param[in] t Указатель на массив временных отсчетов
|
||
восстановленного сигнала.<BR>
|
||
Размер вектора `[nt x 1]`.<BR>
|
||
Память должна быть выделена и заполнена.<BR><BR>
|
||
<BR><BR>
|
||
|
||
\param[in] nt Размер вектора времени и восстановленного сигнала.
|
||
<BR><BR>
|
||
|
||
\param[out] y Указатель на массив восстановленного сигнала.<BR>
|
||
Размер вектора `[nt x 1]`.<BR>
|
||
Память должна быть выделена.<BR><BR>
|
||
|
||
\return
|
||
`RES_OK` Массивы нулей и полюсов рассчитаны успешно.<BR>
|
||
В противном случае
|
||
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||
|
||
|
||
|
||
|
||
|
||
\note
|
||
Выходной восстановленный сигнал в общем случае является комплексным.
|
||
Однако при соблюдении свойств симметрии векторов `w` и `s` относительно
|
||
нулевой частоты получим мнимую часть элементов вектора `y` на уровне ошибок
|
||
округления числа с двойной точностью. Ничтожно малую мнимую часть в этом случае
|
||
можно игнорировать.
|
||
<BR>
|
||
|
||
\author
|
||
Бахурин Сергей
|
||
www.dsplib.org
|
||
|
||
***************************************************************************** */
|