/*! **************************************************************************** \ingroup FIR_FILTER_DESIGN_GROUP \fn int DSPL_API fir_linphase(int ord, double w0, double w1, int filter_type, int win_type, double win_param, double* h) \brief Расчет коэффициентов линейно-фазового КИХ-фильтра методом оконного взвешивания. Функция рассчитывает коэффициенты передаточной характеристики \f[ H(z) = \sum_{n = 0}^{ord} h_n z^{-n} \f] цифрового линейно-фазового КИХ-фильтра фильтра. \param[in] ord Порядок фильтра (количество элементов задержки). \n Количество коэффициентов фильтра равно `ord+1`. \n \n \param[in] w0 Нормированная частота среза ФНЧ или ФВЧ, или левая частота среза для полосового и режекторного фильтра. \n \n \param[in] w1 Правая частота среза полосового и режекторного фильтра. \n Данный параметр игнорируется для ФНЧ и ФВЧ. \n Частота `w1` должна быть больше `w0`. \n \n \param[in] filter_type Тип фильтра. \n Данный параметр определяет тип фильтра и может принимать одно из значений: \n \verbatim DSPL_FILTER_LPF - фильтр нижних частот; DSPL_FILTER_HPF - фильтр верхних частот; DSPL_FILTER_BPASS - полосовой фильтр; DSPL_FILTER_BSTOP - режекторный фильтр. \endverbatim \n \n \param [in] win_type Тип оконной функции. \n Может принимать одно из следующих значений: \n \verbatim ------------------------------------------------------------------------- Значение win_type | Описание -----------------------------|------------------------------------------- DSPL_WIN_BARTLETT | Непараметрическое окно Бартлетта -----------------------------|------------------------------------------- DSPL_WIN_BARTLETT_HANN | Непараметрическое окно Бартлетта-Ханна -----------------------------|------------------------------------------- DSPL_WIN_BLACKMAN | Непараметрическое окно Блэкмана -----------------------------|------------------------------------------- DSPL_WIN_BLACKMAN_HARRIS | Непараметрическое окно Блэкмана-Харриса -----------------------------|------------------------------------------- DSPL_WIN_BLACKMAN_NUTTALL | Непараметрическое окно Блэкмана-Натталла -----------------------------|------------------------------------------- DSPL_WIN_CHEBY | Параметрическое окно Дольф-Чебышева. | Параметр win_param задает уровень | боковых лепестков в дБ. -----------------------------|------------------------------------------- DSPL_WIN_COS | Непараметрическое косинус-окно -----------------------------|------------------------------------------- DSPL_WIN_FLAT_TOP | Непараметрическое окно с максимально | плоской вершиной -----------------------------|------------------------------------------- DSPL_WIN_GAUSSIAN | Параметрическое окно Гаусса -----------------------------|------------------------------------------- DSPL_WIN_HAMMING | Непараметрическое окно Хемминга -----------------------------|------------------------------------------- DSPL_WIN_HANN | Непараметрическое окно Ханна -----------------------------|------------------------------------------- DSPL_WIN_KAISER | Параметрическое окно Кайзера -----------------------------|------------------------------------------- DSPL_WIN_LANCZOS | Непараметрическое окно Ланкзоса -----------------------------|------------------------------------------- DSPL_WIN_NUTTALL | Непараметрическое окно Натталла -----------------------------|------------------------------------------- DSPL_WIN_RECT | Непараметрическое прямоугольное окно ------------------------------------------------------------------------- \endverbatim \n \n \param [in] win_param Параметр окна. \n Данный параметр применяется только для параметрических оконных функций. \n Для непараметрических окон игнорируется. \n \n \param[out] h Указатель на вектор коэффициентов линейно-фазового КИХ-фильтраю \f$H(z)\f$. \n Размер вектора `[ord+1 x 1]`. \n Память должна быть выделена. \n \n \note Для соблюдения условия линейной ФЧХ используются только симметричные окна. \n \n Расчет режекторного линейно-фазового КИХ-фильтра (если `filter_type = DSPL_FILTER_BSTOP`) производится только для фильтров чётного порядка `ord`. В случае нечетного порядка `ord` функция вернет код ошибки `ERROR_FILTER_ORD`. \n \return `RES_OK` Фильтр рассчитан успешно. \n В противном случае \ref ERROR_CODE_GROUP "код ошибки". \n Пример использования функции: \include fir_linphase_test.c Программа расчитывает коэффициенты и АЧХ линейно-фазовых КИХ-фильтрова нижних, верхних частот, полосовых и режекторных с применением различных весовых окон: прямоугольное, Хемминга, Илэкмана и Блэкмана-Харриса. \n Полученные АЧХ выводятся на график \image html fir_linphase_test.png \author Бахурин Сергей www.dsplib.org ***************************************************************************** */