2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-05-05 07:33:56 +00:00
|
|
|
|
/*! ****************************************************************************
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\ingroup IIR_FILTER_DESIGN_GROUP
|
|
|
|
|
\fn int butter_ap(double Rp, int ord, double* b, double* a)
|
|
|
|
|
\brief Расчет передаточной характеристики \f$ H(s) \f$ аналогового
|
|
|
|
|
нормированного ФНЧ Баттерворта.
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
Функция рассчитывает коэффициенты передаточной характеристики \f$H(s)\f$
|
|
|
|
|
аналогового нормированного ФНЧ Баттерворта порядка `ord` с частотой среза
|
|
|
|
|
1 рад/с по уровню \f$ -R_p \f$ дБ.
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[in] Rp Неравномерность АЧХ в полосе пропускания (дБ).<BR>
|
|
|
|
|
Параметр задает уровень искажений
|
|
|
|
|
в полосе от 0 до 1 рад/с.<BR>
|
|
|
|
|
Значение должно быть положительным.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[in] ord Порядок фильтра.<BR>
|
|
|
|
|
Количество коэффициентов числителя и знаменателя
|
|
|
|
|
передаточной функции \f$H(s)\f$ равно `ord+1`.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[out] b Указатель на вектор коэффициентов
|
|
|
|
|
числителя передаточной функции \f$H(s)\f$.<BR>
|
|
|
|
|
Размер вектора `[ord+1 x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[out] a Указатель на вектор коэффициентов знаменателя
|
|
|
|
|
передаточной функции \f$H(s)\f$.<BR>
|
|
|
|
|
Размер вектора `[ord+1 x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Фильтр рассчитан успешно.<BR><BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\author
|
|
|
|
|
Бахурин Сергей
|
|
|
|
|
www.dsplib.org
|
2018-05-05 07:33:56 +00:00
|
|
|
|
***************************************************************************** */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*! ****************************************************************************
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\ingroup IIR_FILTER_DESIGN_GROUP
|
|
|
|
|
\fn int butter_ap_zp(int ord, double rp, complex_t *z, int* nz,
|
|
|
|
|
complex_t* p, int* np)
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\brief Расчет массивов нулей и полюсов передаточной функции
|
|
|
|
|
\f$ H(s) \f$ аналогового нормированного ФНЧ Баттерворта.
|
|
|
|
|
|
|
|
|
|
Функция рассчитывает значения нулей и полюсов передаточной функции
|
|
|
|
|
\f$ H(s)\f$ аналогового нормированного ФНЧ Баттерворта порядка `ord`
|
|
|
|
|
с частотой среза 1 рад/с по уровню \f$-R_p\f$ дБ.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] ord Порядок фильтра. <BR>
|
|
|
|
|
|
|
|
|
|
\param[in] rp Неравномерность АЧХ в полосе пропускания (дБ).<BR>
|
|
|
|
|
Параметр задает уровень искажений в
|
|
|
|
|
полосе от 0 до 1 рад/с.<BR>
|
|
|
|
|
Значение должно быть положительным.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] z Указатель на массив комплексных нулей
|
|
|
|
|
передаточной характеристики \f$ H(s)\f$.<BR>
|
|
|
|
|
Максимальный размер вектора вектора `[ord x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] nz Указатель на переменную количества нулей
|
|
|
|
|
передаточной характеристики \f$ H(s)\f$.<BR>
|
|
|
|
|
По данному укащзателю будет записано количество
|
|
|
|
|
нулей фильтра, которые были рассчитны и
|
|
|
|
|
помещены в вектор `z`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] p Указатель на массив комплексных полюсов
|
|
|
|
|
передаточной характеристики \f$ H(s)\f$.<BR>
|
|
|
|
|
Максимальный размер вектора вектора `[ord x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] np Указатель на переменную количества полюсов
|
|
|
|
|
передаточной характеристики \f$ H(s)\f$.<BR>
|
|
|
|
|
По данному укащзателю будет записано количество
|
|
|
|
|
нулей фильтра, которые были рассчитны и
|
|
|
|
|
помещены в вектор `p`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Массивы нулей и полюсов рассчитаны успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\note
|
|
|
|
|
Нормированный ФНЧ Баттерворта не имеет нулей,
|
|
|
|
|
поэтому массив нулей `z` не будет изменен,
|
|
|
|
|
а по указателю `nz` будет записан 0.<BR>
|
|
|
|
|
|
|
|
|
|
\author
|
|
|
|
|
Бахурин Сергей
|
|
|
|
|
www.dsplib.org
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
|
|
|
|
***************************************************************************** */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*! ****************************************************************************
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\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$ дБ.<BR>
|
|
|
|
|
|
|
|
|
|
Особенностью фильтра Чебышёва первого рода являются
|
|
|
|
|
равноволновые пульсации АЧХ в полосе пропускания.
|
|
|
|
|
|
|
|
|
|
\param[in] Rp Неравномерность АЧХ в полосе пропускания (дБ).<BR>
|
|
|
|
|
Параметр задает уровень искажений
|
|
|
|
|
в полосе от 0 до 1 рад/с.<BR>
|
|
|
|
|
Значение должно быть положительным.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] ord Порядок фильтра.<BR>
|
|
|
|
|
Количество коэффициентов числителя и знаменателя
|
|
|
|
|
передаточной функции \f$ H(s)\f$ равно `ord+1`.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] b Указатель на вектор коэффициентов числителя
|
|
|
|
|
передаточной функции \f$H(s)\f$.<BR>
|
|
|
|
|
Размер вектора `[ord+1 x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] a Указатель на вектор коэффициентов знаменателя
|
|
|
|
|
передаточной функции \f$H(s)\f$.<BR>
|
|
|
|
|
Размер вектора `[ord+1 x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Фильтр рассчитан успешно.<BR><BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
2018-07-08 20:57:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Пример использования функции `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
|
|
|
|
|
|
|
|
|
|
<BR><BR>
|
|
|
|
|
В каталоге `dat` будут созданы три файла:<BR>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
cheby1_ap_test_mag.txt АЧХ фильтра
|
|
|
|
|
cheby1_ap_test_phi.txt ФЧХ фильтра
|
|
|
|
|
cheby1_ap_test_tau.txt ГВЗ фильтра
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
Кроме того программа GNUPLOT произведет построение следующих графиков
|
|
|
|
|
по сохраненным в файлах данным:
|
|
|
|
|
|
2018-10-05 13:37:20 +00:00
|
|
|
|
\image html cheby1_ap_test.png
|
2018-07-08 20:57:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Скрипт GNUPLOT для построения графиков из текстовых файлов:
|
|
|
|
|
\include cheby1_ap_test.plt
|
|
|
|
|
|
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
|
|
|
|
|
\author
|
2018-07-08 20:57:52 +00:00
|
|
|
|
Бахурин Сергей
|
2018-05-05 18:07:43 +00:00
|
|
|
|
www.dsplib.org
|
2018-05-05 07:33:56 +00:00
|
|
|
|
***************************************************************************** */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*! ****************************************************************************
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\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$ аналогового нормированного ФНЧ Чебышёва первого рода.
|
2018-05-03 13:20:12 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
Функция рассчитывает значения нулей и полюсов передаточной функции
|
|
|
|
|
\f$ H(s)\f$ аналогового нормированного ФНЧ Чебышёва первого рода
|
|
|
|
|
порядка `ord` с частотой среза 1 рад/с по уровню \f$-R_p\f$ дБ, с
|
|
|
|
|
неравномерностью в полосе пропускания \f$ R_p \f$ дБ.<BR>
|
2018-05-03 13:20:12 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
|
|
|
|
|
\param[in] ord Порядок фильтра. <BR>
|
2018-05-03 13:20:12 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
|
|
|
|
|
\param[in] rp Неравномерность АЧХ в полосе пропускания (дБ).<BR>
|
|
|
|
|
Параметр задает уровень искажений
|
|
|
|
|
в полосе от 0 до 1 рад/с.<BR>
|
|
|
|
|
Значение должно быть положительным.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] z Указатель на массив комплексных нулей
|
|
|
|
|
передаточной характеристики \f$ H(s)\f$.<BR>
|
|
|
|
|
Максимальный размер вектора вектора `[ord x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] nz Указатель на переменную количества нулей
|
|
|
|
|
передаточной функции \f$H(s)\f$.<BR>
|
|
|
|
|
По данному указателю будет записано количество
|
|
|
|
|
нулей фильтра, которые были
|
|
|
|
|
рассчитаны и помещены в вектор `z`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] p Указатель на массив комплексных полюсов
|
|
|
|
|
передаточной характеристики \f$H(s)\f$.<BR>
|
|
|
|
|
Максимальный размер вектора вектора `[ord x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] np Указатель на переменную количества полюсов
|
|
|
|
|
передаточной функции \f$ H(s)\f$.<BR>
|
|
|
|
|
По данному укащзателю будет записано количество
|
|
|
|
|
нулей фильтра, которые были
|
|
|
|
|
рассчитны и помещены в вектор `p`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Массивы нулей и полюсов рассчитаны успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
2018-05-03 13:20:12 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\note
|
|
|
|
|
Нормированный ФНЧ Чебышёва первого рода не имеет нулей,
|
|
|
|
|
поэтому массив нулей `z` не будет изменен,
|
|
|
|
|
а по указателю `nz` будет записан 0.<BR>
|
|
|
|
|
|
|
|
|
|
\author
|
|
|
|
|
Бахурин Сергей
|
|
|
|
|
www.dsplib.org
|
2018-05-03 13:20:12 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
***************************************************************************** */
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-01 12:54:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
/*! ****************************************************************************
|
|
|
|
|
\ingroup IIR_FILTER_DESIGN_GROUP
|
|
|
|
|
\fn int cheby2_ap(double Rs, int ord, double *b, double *a)
|
2018-05-01 12:54:28 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\brief Расчет передаточной характеристики \f$ H(s) \f$ аналогового
|
|
|
|
|
нормированного ФНЧ Чебышёва второго рода.
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
Функция рассчитывает коэффициенты передаточной характеристики \f$H(s)\f$
|
|
|
|
|
аналогового нормированного ФНЧ Чебышёва второго рода порядка `ord`
|
|
|
|
|
с частотой заграждения 1 рад/с по уровню \f$-R_s\f$ дБ.<BR>
|
|
|
|
|
|
|
|
|
|
Особенностью фильтра Чебышёва второго рода являются: <BR>
|
|
|
|
|
1) равноволновые пульсации АЧХ в полосе заграждения.<BR>
|
|
|
|
|
2) уровень АЧХ \f$H(j\cdot 1) = -R_s\f$ дБ.<BR>
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[in] Rs Уровень подавления в полосе пропускания (дБ).<BR>
|
|
|
|
|
Значение должно быть положительным.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] ord Порядок фильтра. <BR>
|
|
|
|
|
Количество коэффициентов числителя и знаменателя
|
|
|
|
|
передаточной функции \f$H(s)\f$ равно `ord+1`.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[out] b Указатель на вектор коэффициентов числителя
|
|
|
|
|
передаточной функции \f$H(s)\f$.<BR>
|
|
|
|
|
Размер вектора `[ord+1 x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] a Указатель на вектор коэффициентов знаменателя
|
|
|
|
|
передаточной функции \f$H(s)\f$.<BR>
|
|
|
|
|
Размер вектора `[ord+1 x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Фильтр рассчитан успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
\author
|
|
|
|
|
Бахурин Сергей
|
|
|
|
|
www.dsplib.org
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
***************************************************************************** */
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
/*! ****************************************************************************
|
|
|
|
|
\ingroup IIR_FILTER_DESIGN_GROUP
|
|
|
|
|
\fn int cheby2_ap_zp( int ord, double rs, complex_t *z, int* nz,
|
|
|
|
|
complex_t* p, int* np)
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\brief Расчет массивов нулей и полюсов передаточной функции \f$ H(s) \f$
|
|
|
|
|
аналогового нормированного ФНЧ Чебышёва второго рода.
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
Функция рассчитывает значения нулей и полюсов передаточной функции
|
|
|
|
|
\f$H(s)\f$ аналогового нормированного ФНЧ Чебышёва второго рода порядка `ord` с
|
|
|
|
|
частотой заграждения 1 рад/с по уровню \f$-R_s\f$ дБ.<BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[in] ord Порядок фильтра. <BR>
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
|
|
|
|
|
\param[in] rs Уровень подавления АЧХ в полосе загражения (дБ).<BR>
|
|
|
|
|
Параметр задает уровень подавления сигнала
|
|
|
|
|
в полосе частот от 1 рад/с и выше.<BR>
|
|
|
|
|
Значение должно быть положительным.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[out] z Указатель на массив комплексных нулей передаточной
|
|
|
|
|
характеристики \f$H(s)\f$.<BR>
|
|
|
|
|
Максимальный размер вектора вектора `[ord x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] nz Указатель на переменную количества нулей передаточной
|
|
|
|
|
функции \f$H(s)\f$.<BR>
|
|
|
|
|
По данному укащзателю будет записано количество нулей
|
|
|
|
|
фильтра, которые были
|
|
|
|
|
рассчитны и помещены в вектор `z`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[out] p Указатель на массив комплексных полюсов передаточной
|
|
|
|
|
характеристики \f$H(s)\f$.<BR>
|
|
|
|
|
Максимальный размер вектора вектора `[ord x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] np Указатель на переменную количества полюсов передаточной
|
|
|
|
|
функции \f$H(s)\f$.<BR>
|
|
|
|
|
По данному укащзателю будет записано количество нулей
|
|
|
|
|
фильтра, которые были
|
|
|
|
|
рассчитны и помещены в вектор `p`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Массивы нулей и полюсов рассчитаны успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
Пример использования функции `cheby2_ap_zp`:
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\include cheby2_ap_zp_test.c
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
Результат работы программы:
|
|
|
|
|
|
|
|
|
|
\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
|
2018-05-03 13:20:12 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\author
|
|
|
|
|
Бахурин Сергей
|
|
|
|
|
www.dsplib.org
|
|
|
|
|
***************************************************************************** */
|
2018-05-03 13:20:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-05-01 12:54:28 +00:00
|
|
|
|
|
|
|
|
|
|
2018-05-25 13:52:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
/*! ****************************************************************************
|
|
|
|
|
\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$
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\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 Указатель на массив нулей
|
|
|
|
|
передаточной характеристики.<BR>
|
|
|
|
|
Размер вектора `[nz x 1]`.<BR>
|
|
|
|
|
Указатель может быть `NULL` если фильтр не
|
|
|
|
|
имеет конечных нулей (`nz=0`).<BR><BR>
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[in] nz Размер вектора нулей передаточной характеристики
|
|
|
|
|
(может быть равен 0).<BR><BR>
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[in] p Указатель на массив полюсов
|
|
|
|
|
передаточной характеристики.<BR>
|
|
|
|
|
Размер вектора `[np x 1]`.<BR>
|
|
|
|
|
Указатель не может быть `NULL`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[in] np Размер вектора полюсов передаточной характеристики
|
|
|
|
|
(не может быть равен 0).<BR><BR>
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[in] ord Порядок фильтра для которого
|
|
|
|
|
рассчитаны нули и полюса. <BR>
|
|
|
|
|
Количество коэффициентов числителя и знаменателя
|
|
|
|
|
передаточной функции \f$H(s)\f$ равно `ord+1`.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[out] b Указатель на вектор коэффициентов числителя
|
|
|
|
|
передаточной функции \f$H(s)\f$.<BR>
|
|
|
|
|
Размер вектора `[ord+1 x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
2018-03-13 20:46:25 +00:00
|
|
|
|
|
2018-05-05 18:07:43 +00:00
|
|
|
|
\param[out] a Указатель на вектор коэффициентов знаменателя
|
|
|
|
|
передаточной функции \f$H(s)\f$.<BR>
|
|
|
|
|
Размер вектора `[ord+1 x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Пересчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
\note Функция возвращает вещественные значения коэффициентов `b` и
|
|
|
|
|
`a` передаточной функции. Это означает, что вектора нулей и полюсов
|
|
|
|
|
должны хранить вещественные значения или комплексно-сопряженные пары
|
|
|
|
|
нулей и полюсов, потому что мнимая часть коэффициентов `b` и `a`
|
|
|
|
|
игнорируется и не сохраняется.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\author
|
|
|
|
|
Бахурин Сергей
|
|
|
|
|
www.dsplib.org
|
|
|
|
|
|
|
|
|
|
***************************************************************************** */
|
2018-05-03 13:20:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-05-05 07:33:56 +00:00
|
|
|
|
|