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

478 wiersze
21 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 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 Неравномерность АЧХ в полосе пропускания (дБ).<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>
\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$ дБ.<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>
\note
Нормированный ФНЧ Баттерворта не имеет нулей,
поэтому массив нулей `z` не будет изменен,
а по указателю `nz` будет записан 0.<BR>
\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$ дБ.<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>
Пример использования функции `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 произведет построение следующих графиков
по сохраненным в файлах данным:
\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$ дБ.<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>
\note
Нормированный ФНЧ Чебышёва первого рода не имеет нулей,
поэтому массив нулей `z` не будет изменен,
а по указателю `nz` будет записан 0.<BR>
\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$ дБ.<BR>
Особенностью фильтра Чебышёва второго рода являются: <BR>
1) равноволновые пульсации АЧХ в полосе заграждения.<BR>
2) уровень АЧХ \f$H(j\cdot 1) = -R_s\f$ дБ.<BR>
\param[in] Rs Уровень подавления в полосе пропускания (дБ).<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>
В противном случае
\ref ERROR_CODE_GROUP "код ошибки".<BR>
\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$ дБ.<BR>
\param[in] ord Порядок фильтра. <BR>
\param[in] rs Уровень подавления АЧХ в полосе загражения (дБ).<BR>
Параметр задает уровень подавления сигнала
в полосе частот от 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>
Пример использования функции `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 Указатель на массив нулей
передаточной характеристики.<BR>
Размер вектора `[nz x 1]`.<BR>
Указатель может быть `NULL` если фильтр не
имеет конечных нулей (`nz=0`).<BR><BR>
\param[in] nz Размер вектора нулей передаточной характеристики
(может быть равен 0).<BR><BR>
\param[in] p Указатель на массив полюсов
передаточной характеристики.<BR>
Размер вектора `[np x 1]`.<BR>
Указатель не может быть `NULL`.<BR>
Память должна быть выделена.<BR><BR>
\param[in] np Размер вектора полюсов передаточной характеристики
(не может быть равен 0).<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>
В противном случае
\ref ERROR_CODE_GROUP "код ошибки".<BR>
\note Функция возвращает вещественные значения коэффициентов `b` и
`a` передаточной функции. Это означает, что вектора нулей и полюсов
должны хранить вещественные значения или комплексно-сопряженные пары
нулей и полюсов, потому что мнимая часть коэффициентов `b` и `a`
игнорируется и не сохраняется.
\author
Бахурин Сергей
www.dsplib.org
***************************************************************************** */