libdspl-2.0/dspl/dox/ru/filter_an.dox

243 wiersze
10 KiB
Plaintext
Czysty Wina Historia

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*! ****************************************************************************
\ingroup FILTER_ANALYSIS_GROUP
\fn int freqs(double* b, double* a, int ord, double* w, int n, complex_t *h)
\brief Расчет комплексного коэффициента передачи
\f$ H(j \omega) \f$ аналогового фильтра.
Функция рассчитывает значения комплексного коэффициента передачи
\f$ H(j \omega)\f$ аналогового фильтра, заданного коэффициентами
передаточной функции \f$ H(s) \f$:
\f[
H(s) = \frac {\sum_{k = 0}^{N} b_k \cdot s^k}
{\sum_{m = 0}^{N} a_m \cdot s^m},
\f]
где \f$ N \f$ - порядок фильтра (параметр `ord`).
Комплексный коэффициент передачи рассчитывается путем
подстановки \f$ s = j \omega \f$.
\param[in] b Указатель на вектор коэффициентов числителя
передаточной функции \f$ H(s) \f$.<BR>
Размер вектора `[ord+1 x 1]`.<BR><BR>
\param[in] a Указатель на вектор коэффициентов знаменателя
передаточной функции \f$ H(s) \f$.<BR>
Размер вектора `[ord+1 x 1]`.<BR><BR>
\param[in] ord Порядок фильтра. Количество коэффициентов числителя и
знаменателя передаточной функции \f$ H(s) \f$
равно `ord+1`.<BR><BR>
\param[in] w Указатель на вектор значений циклической частоты
\f$ \omega \f$ (рад/с), для которого будет рассчитан
комплексный коэффициент передачи
\f$ H(j \omega) \f$.<BR>
Размер вектора `[n x 1]`.<BR><BR>
\param[in] n Размер вектора циклической частоты `w`.<BR><BR>
\param[out] h Указатель на вектор комплексного коэффициента передачи
\f$ H(j \omega) \f$, рассчитанного для
циклической частоты `w`.<BR>
Размер вектора `[n x 1]`.<BR>
Память должна быть выделена.<BR> <BR>
\return
`RES_OK` Комплексноый коэффициент передачи рассчитан
успешно.<BR>
В противном случае
\ref ERROR_CODE_GROUP "код ошибки".<BR>
\author
Бахурин Сергей
www.dsplib.org
***************************************************************************** */
/*! ****************************************************************************
\ingroup FILTER_ANALYSIS_GROUP
\fn int freqs_resp( double* b, double* a, int ord, double* w, int n,
int flag, double *h, double* phi, double* tau)
\brief Расчет амплитудно-частотной (АЧХ),
фазочастотной характеристик (ФЧХ),
а также группового времени запаздывания (ГВЗ) аналогового фильтра.
Функция рассчитывает АЧХ, ФЧХ и ГВЗ аналоговго фильтра,
заданного передаточной характеристикой \f$ H(s) \f$
\param[in] b Указатель на вектор коэффициентов числителя
передаточной функции \f$ H(s) \f$.<BR>
Размер вектора `[ord+1 x 1]`.<BR><BR>
\param[in] a Указатель на вектор коэффициентов знаменателя
передаточной функции \f$ H(s) \f$.<BR>
Размер вектора `[ord+1 x 1]`.<BR><BR>
\param[in] ord Порядок фильтра. Количество коэффициентов
числителя и знаменателя передаточной
функции \f$ H(s) \f$ равно `ord+1`.<BR> <BR>
\param[in] w Указатель на вектор значений циклической частоты
\f$ \omega \f$ (рад/с), для которого будет рассчитаны
АЧХ, ФЧХ и ГВЗ.<BR>
Размер вектора `[n x 1]`.<BR><BR>
\param[in] n Размер вектора циклической частоты `w`.<BR> <BR>
\param[in] flag Комбинация флагов, которые задают расчет параметров:<BR>
<pre>
DSPL_FLAG_LOG АЧХ рассчитывать в логарифмическом масштабе
DSPL_FLAG_UNWRAP раскрывать периодичность ФЧХ
</pre>
\param[out] h Указатель на вектор АЧХ.<BR>
Размер вектора `[n x 1]`.<BR>
Память должна быть выделена.<BR>
Если указатель `NULL`, то расчет АЧХ не производится.
<BR><BR>
\param[out] phi Указатель на вектор ФЧХ.<BR>
Размер вектора `[n x 1]`.<BR>
Память должна быть выделена.<BR>
Если указатель `NULL`, то расчет ФЧХ не производится.
<BR><BR>
\param[out] tau Указатель на вектор ГВЗ.<BR>
Размер вектора `[n x 1]`.<BR>
Память должна быть выделена.<BR>
Если указатель `NULL`, то расчет ГВЗ не производится.
<BR><BR>
Пример использования функции `freqs_resp`:
\include butter_ap_test.c
Результат работы программы:
\verbatim
b[ 0] = 1.002 a[ 0] = 1.002
b[ 1] = 0.000 a[ 1] = 2.618
b[ 2] = 0.000 a[ 2] = 3.418
b[ 3] = 0.000 a[ 3] = 2.615
b[ 4] = 0.000 a[ 4] = 1.000
\endverbatim
<BR><BR>
В каталоге `dat` будут созданы три файла:<BR>
<pre>
butter_ap_test_mag.txt АЧХ фильтра
butter_ap_test_phi.txt ФЧХ фильтра
butter_ap_test_tau.txt ГВЗ фильтра
</pre>
Кроме того программа GNUPLOT произведет построение следующих графиков
по сохраненным в файлах данным:
\image html butter_ap_test.png
\return
`RES_OK` Параметры фильтра рассчитаны успешно.<BR>
В противном случае
\ref ERROR_CODE_GROUP "код ошибки".<BR>
\author
Бахурин Сергей
www.dsplib.org
***************************************************************************** */
/*! ****************************************************************************
\ingroup FILTER_ANALYSIS_GROUP
\fn int freqz(double* b, double* a, int ord, double* w, int n, complex_t *h)
\brief Расчет комплексного коэффициента передачи
\f$ H \left(e^{j \omega} \right)\f$ цифрового фильтра.
Функция рассчитывает значения комплексного коэффициента передачи
\f$ H \left(e^{j \omega} \right)\f$ цифрового фильтра, заданного
коэффициентами передаточной функции \f$H(z)\f$:
\f[
H(z) = \frac {\sum_{k = 0}^{N} b_k \cdot z^{-k}}
{\sum_{m = 0}^{N} a_m \cdot z^{-m}},
\f]
где \f$N\f$ - порядок фильтра (параметр `ord`).<BR>
Комплексный коэффициент передачи рассчитывается путем
подстановки \f$z = e^{j \omega} \f$.<BR>
\param[in] b Указатель на вектор коэффициентов числителя
передаточной функции \f$H(z)\f$.<BR>
Размер вектора `[ord+1 x 1]`.<BR><BR>
\param[in] a Указатель на вектор коэффициентов знаменателя
передаточной функции \f$H(z)\f$.<BR>
Размер вектора `[ord+1 x 1]`.<BR><BR>
\param[in] ord Порядок фильтра. Количество коэффициентов
числителя и знаменателя передаточной
функции \f$H(z)\f$ равно `ord+1`.<BR><BR>
\param[in] w Указатель на вектор значений нормированной
циклической частоты \f$\omega\f$,
для которого будет рассчитан комплексный коэффициент
передачи \f$ H \left(e^{j \omega} \right)\f$.<BR>
Размер вектора `[n x 1]`.<BR><BR>
\param[in] n Размер вектора нормированной циклической частоты `w`.
<BR><BR>
\param[out] h Указатель на вектор комплексного коэффициента передачи
\f$ H \left(e^{j \omega} \right)\f$, рассчитанного для
циклической частоты `w`.<BR>
Размер вектора `[n x 1]`.<BR>
Память должна быть выделена.<BR><BR>
\return
`RES_OK` Комплексный коэффициент передачи расcчитан успешно.<BR>
В противном случае
\ref ERROR_CODE_GROUP "код ошибки".<BR>
\note
Комплексный коэффициент передачи \f$ H \left(e^{j \omega} \right)\f$
цифрового фильтра представляет собой \f$ 2 \pi-\f$периодическую функцию
нормированной циклической частоты \f$\omega\f$.
Поэтому анализ цифровых фильтров целесообразно вести на одном периоде
повторения \f$ H \left(e^{j \omega} \right)\f$, т.е. в интервале
\f$\omega\f$ от 0 до \f$2 \pi\f$, или от \f$-\pi\f$ до \f$ \pi\f$. <BR>
Кроме того известно, что для фильтра с вещественными коэффициентами
\f$ H \left(e^{j \omega} \right) = H^* \left(e^{-j \omega} \right)\f$,
а значит, анализ цифрового фильтра с вещественными коэффициентами
достаточно вести для нормированной частоты \f$\omega\f$ от 0 до \f$\pi\f$.
\author
Бахурин Сергей
www.dsplib.org
***************************************************************************** */