/*! **************************************************************************** \ingroup IIR_FILTER_DESIGN_GROUP \fn int butter_ap(double Rp, int ord, double* b, double* a) \brief Расчет передаточной характеристики \f$ H(s) \f$ аналогового нормированного ФНЧ Баттерворта. Функция рассчитывает коэффициенты передаточной характеристики \f$H(s)\f$ аналогового нормированного ФНЧ Баттерворта порядка `ord` с частотой среза 1 рад/с по уровню \f$ -R_p \f$ дБ. \param[in] Rp Неравномерность АЧХ в полосе пропускания (дБ).
Параметр задает уровень искажений в полосе от 0 до 1 рад/с.
Значение должно быть положительным.

\param[in] ord Порядок фильтра.
Количество коэффициентов числителя и знаменателя передаточной функции \f$H(s)\f$ равно `ord+1`.

\param[out] b Указатель на вектор коэффициентов числителя передаточной функции \f$H(s)\f$.
Размер вектора `[ord+1 x 1]`.
Память должна быть выделена.

\param[out] a Указатель на вектор коэффициентов знаменателя передаточной функции \f$H(s)\f$.
Размер вектора `[ord+1 x 1]`.
Память должна быть выделена.

\return `RES_OK` Фильтр рассчитан успешно.

В противном случае \ref ERROR_CODE_GROUP "код ошибки".
\author Бахурин Сергей www.dsplib.org ***************************************************************************** */ /*! **************************************************************************** \ingroup IIR_FILTER_DESIGN_GROUP \fn int butter_ap_zp(int ord, double rp, complex_t *z, int* nz, complex_t* p, int* np) \brief Расчет массивов нулей и полюсов передаточной функции \f$ H(s) \f$ аналогового нормированного ФНЧ Баттерворта. Функция рассчитывает значения нулей и полюсов передаточной функции \f$ H(s)\f$ аналогового нормированного ФНЧ Баттерворта порядка `ord` с частотой среза 1 рад/с по уровню \f$-R_p\f$ дБ.
\param[in] ord Порядок фильтра.
\param[in] rp Неравномерность АЧХ в полосе пропускания (дБ).
Параметр задает уровень искажений в полосе от 0 до 1 рад/с.
Значение должно быть положительным.

\param[out] z Указатель на массив комплексных нулей передаточной характеристики \f$ H(s)\f$.
Максимальный размер вектора вектора `[ord x 1]`.
Память должна быть выделена.

\param[out] nz Указатель на переменную количества нулей передаточной характеристики \f$ H(s)\f$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор `z`.
Память должна быть выделена.

\param[out] p Указатель на массив комплексных полюсов передаточной характеристики \f$ H(s)\f$.
Максимальный размер вектора вектора `[ord x 1]`.
Память должна быть выделена.

\param[out] np Указатель на переменную количества полюсов передаточной характеристики \f$ H(s)\f$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор `p`.
Память должна быть выделена.

\return `RES_OK` Массивы нулей и полюсов рассчитаны успешно.
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
\note Нормированный ФНЧ Баттерворта не имеет нулей, поэтому массив нулей `z` не будет изменен, а по указателю `nz` будет записан 0.
\author Бахурин Сергей www.dsplib.org ***************************************************************************** */ /*! **************************************************************************** \ingroup IIR_FILTER_DESIGN_GROUP \fn int cheby1_ap(double Rp, int ord, double* b, double* a) \brief Расчет передаточной характеристики \f$ H(s) \f$ аналогового нормированного ФНЧ Чебышёва первого рода. Функция рассчитывает коэффициенты передаточной характеристики \f$ H(s)\f$ аналогового нормированного ФНЧ Чебышёва первого рода порядка `ord` с частотой среза 1 рад/с по уровню \f$-R_p\f$ дБ.
Особенностью фильтра Чебышёва первого рода являются равноволновые пульсации АЧХ в полосе пропускания. \param[in] Rp Неравномерность АЧХ в полосе пропускания (дБ).
Параметр задает уровень искажений в полосе от 0 до 1 рад/с.
Значение должно быть положительным.

\param[in] ord Порядок фильтра.
Количество коэффициентов числителя и знаменателя передаточной функции \f$ H(s)\f$ равно `ord+1`.

\param[out] b Указатель на вектор коэффициентов числителя передаточной функции \f$H(s)\f$.
Размер вектора `[ord+1 x 1]`.
Память должна быть выделена.

\param[out] a Указатель на вектор коэффициентов знаменателя передаточной функции \f$H(s)\f$.
Размер вектора `[ord+1 x 1]`.
Память должна быть выделена.

\return `RES_OK` Фильтр рассчитан успешно.

В противном случае \ref ERROR_CODE_GROUP "код ошибки".
Пример использования функции `cheby1_ap`: \include cheby1_ap_test.c Результат работы программы: \verbatim b[ 0] = 0.125 a[ 0] = 0.177 b[ 1] = 0.000 a[ 1] = 0.405 b[ 2] = 0.000 a[ 2] = 1.169 b[ 3] = 0.000 a[ 3] = 0.582 b[ 4] = 0.000 a[ 4] = 1.000 \endverbatim

В каталоге `dat` будут созданы три файла:
cheby1_ap_test_mag.txt	  АЧХ фильтра	 
cheby1_ap_test_phi.txt	  ФЧХ фильтра
cheby1_ap_test_tau.txt	  ГВЗ фильтра
Кроме того программа GNUPLOT произведет построение следующих графиков по сохраненным в файлах данным: \image html cheby1_ap_test.png Скрипт GNUPLOT для построения графиков из текстовых файлов: \include cheby1_ap_test.plt \author Бахурин Сергей www.dsplib.org ***************************************************************************** */ /*! **************************************************************************** \ingroup IIR_FILTER_DESIGN_GROUP \fn int cheby1_ap_zp( int ord, double rp, complex_t *z, int* nz, complex_t* p, int* np) \brief Расчет массивов нулей и полюсов передаточной функции \f$ H(s) \f$ аналогового нормированного ФНЧ Чебышёва первого рода. Функция рассчитывает значения нулей и полюсов передаточной функции \f$ H(s)\f$ аналогового нормированного ФНЧ Чебышёва первого рода порядка `ord` с частотой среза 1 рад/с по уровню \f$-R_p\f$ дБ, с неравномерностью в полосе пропускания \f$ R_p \f$ дБ.
\param[in] ord Порядок фильтра.
\param[in] rp Неравномерность АЧХ в полосе пропускания (дБ).
Параметр задает уровень искажений в полосе от 0 до 1 рад/с.
Значение должно быть положительным.

\param[out] z Указатель на массив комплексных нулей передаточной характеристики \f$ H(s)\f$.
Максимальный размер вектора вектора `[ord x 1]`.
Память должна быть выделена.

\param[out] nz Указатель на переменную количества нулей передаточной функции \f$H(s)\f$.
По данному указателю будет записано количество нулей фильтра, которые были рассчитаны и помещены в вектор `z`.
Память должна быть выделена.

\param[out] p Указатель на массив комплексных полюсов передаточной характеристики \f$H(s)\f$.
Максимальный размер вектора вектора `[ord x 1]`.
Память должна быть выделена.

\param[out] np Указатель на переменную количества полюсов передаточной функции \f$ H(s)\f$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор `p`.
Память должна быть выделена.

\return `RES_OK` Массивы нулей и полюсов рассчитаны успешно.
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
\note Нормированный ФНЧ Чебышёва первого рода не имеет нулей, поэтому массив нулей `z` не будет изменен, а по указателю `nz` будет записан 0.
\author Бахурин Сергей www.dsplib.org ***************************************************************************** */ /*! **************************************************************************** \ingroup IIR_FILTER_DESIGN_GROUP \fn int cheby2_ap(double Rs, int ord, double *b, double *a) \brief Расчет передаточной характеристики \f$ H(s) \f$ аналогового нормированного ФНЧ Чебышёва второго рода. Функция рассчитывает коэффициенты передаточной характеристики \f$H(s)\f$ аналогового нормированного ФНЧ Чебышёва второго рода порядка `ord` с частотой заграждения 1 рад/с по уровню \f$-R_s\f$ дБ.
Особенностью фильтра Чебышёва второго рода являются:
1) равноволновые пульсации АЧХ в полосе заграждения.
2) уровень АЧХ \f$H(j\cdot 1) = -R_s\f$ дБ.
\param[in] Rs Уровень подавления в полосе пропускания (дБ).
Значение должно быть положительным.

\param[in] ord Порядок фильтра.
Количество коэффициентов числителя и знаменателя передаточной функции \f$H(s)\f$ равно `ord+1`.

\param[out] b Указатель на вектор коэффициентов числителя передаточной функции \f$H(s)\f$.
Размер вектора `[ord+1 x 1]`.
Память должна быть выделена.

\param[out] a Указатель на вектор коэффициентов знаменателя передаточной функции \f$H(s)\f$.
Размер вектора `[ord+1 x 1]`.
Память должна быть выделена.

\return `RES_OK` Фильтр рассчитан успешно.
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
\author Бахурин Сергей www.dsplib.org ***************************************************************************** */ /*! **************************************************************************** \ingroup IIR_FILTER_DESIGN_GROUP \fn int cheby2_ap_zp( int ord, double rs, complex_t *z, int* nz, complex_t* p, int* np) \brief Расчет массивов нулей и полюсов передаточной функции \f$ H(s) \f$ аналогового нормированного ФНЧ Чебышёва второго рода. Функция рассчитывает значения нулей и полюсов передаточной функции \f$H(s)\f$ аналогового нормированного ФНЧ Чебышёва второго рода порядка `ord` с частотой заграждения 1 рад/с по уровню \f$-R_s\f$ дБ.
\param[in] ord Порядок фильтра.
\param[in] rs Уровень подавления АЧХ в полосе загражения (дБ).
Параметр задает уровень подавления сигнала в полосе частот от 1 рад/с и выше.
Значение должно быть положительным.

\param[out] z Указатель на массив комплексных нулей передаточной характеристики \f$H(s)\f$.
Максимальный размер вектора вектора `[ord x 1]`.
Память должна быть выделена.

\param[out] nz Указатель на переменную количества нулей передаточной функции \f$H(s)\f$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор `z`.
Память должна быть выделена.

\param[out] p Указатель на массив комплексных полюсов передаточной характеристики \f$H(s)\f$.
Максимальный размер вектора вектора `[ord x 1]`.
Память должна быть выделена.

\param[out] np Указатель на переменную количества полюсов передаточной функции \f$H(s)\f$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор `p`.
Память должна быть выделена.

\return `RES_OK` Массивы нулей и полюсов рассчитаны успешно.
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
Пример использования функции `cheby2_ap_zp`: \include cheby2_ap_zp_test.c Результат работы программы: \verbatim Chebyshev type 2 zeros: z[ 0] = 0.000 1.026 j z[ 1] = 0.000 -1.026 j z[ 2] = 0.000 1.279 j z[ 3] = 0.000 -1.279 j z[ 4] = 0.000 2.305 j z[ 5] = 0.000 -2.305 j Chebyshev type 2 poles: p[ 0] = -1.203 0.000 j p[ 1] = -0.113 0.772 j p[ 2] = -0.113 -0.772 j p[ 3] = -0.398 0.781 j p[ 4] = -0.398 -0.781 j p[ 5] = -0.852 0.642 j p[ 6] = -0.852 -0.642 j \endverbatim \author Бахурин Сергей www.dsplib.org ***************************************************************************** */ /*! **************************************************************************** \ingroup IIR_FILTER_DESIGN_GROUP \fn int filter_zp2ab( complex_t *z, int nz, complex_t *p, int np, int ord, double* b, double* a) \brief Функция пересчета нулей и полюсов аналогового фильтра в коэффициенты передаточной характеристики \f$ H(s) \f$ \f[ H(s) = \frac{\sum_{n = 0}^{N_z} b_n \cdot s^n}{\sum_{m = 0}^{N_p} a_m \cdot s^m} = \frac{\prod_{n = 0}^{N_z}(s-z_n)}{\prod_{m = 0}^{N_p} (s-p_m)} \f] \param[in] z Указатель на массив нулей передаточной характеристики.
Размер вектора `[nz x 1]`.
Указатель может быть `NULL` если фильтр не имеет конечных нулей (`nz=0`).

\param[in] nz Размер вектора нулей передаточной характеристики (может быть равен 0).

\param[in] p Указатель на массив полюсов передаточной характеристики.
Размер вектора `[np x 1]`.
Указатель не может быть `NULL`.
Память должна быть выделена.

\param[in] np Размер вектора полюсов передаточной характеристики (не может быть равен 0).

\param[in] ord Порядок фильтра для которого рассчитаны нули и полюса.
Количество коэффициентов числителя и знаменателя передаточной функции \f$H(s)\f$ равно `ord+1`.

\param[out] b Указатель на вектор коэффициентов числителя передаточной функции \f$H(s)\f$.
Размер вектора `[ord+1 x 1]`.
Память должна быть выделена.

\param[out] a Указатель на вектор коэффициентов знаменателя передаточной функции \f$H(s)\f$.
Размер вектора `[ord+1 x 1]`.
Память должна быть выделена.

\return `RES_OK` Пересчет произведен успешно.
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
\note Функция возвращает вещественные значения коэффициентов `b` и `a` передаточной функции. Это означает, что вектора нулей и полюсов должны хранить вещественные значения или комплексно-сопряженные пары нулей и полюсов, потому что мнимая часть коэффициентов `b` и `a` игнорируется и не сохраняется. \author Бахурин Сергей www.dsplib.org ***************************************************************************** */