Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определение параметров фильтра
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
strap89
Здравствуйте!
Помогите разобраться пожалуйста. Есть цифровой БИХ-фильтр 2-го порядка, режекторный.
Есть алгоритм расчета его коэффициентов. И есть пара коэффициентов, определяющих параметры фильтра (это мои предположения).
Не могли бы Вы подсказать мне, какой тип фильтра тут использован и что определяют его параметры. Сам алгоритм:
void makefiltr2coeff(filtr2& flt,double Tsam,double f0,double f1,double ksi0,double ksi1)
{
if(!f0||!f1||!Tsam||!ksi0||!ksi1)
return;
Tsam*=scaleTsam;
double om0=2.*M_PI*f0;
double om1=2.*M_PI*f1;
double tau0=.5/tan(Tsam*om0/2.);
double tau1=.5/tan(Tsam*om1/2.);
double d=1.+(4.*tau1*(tau1+ksi1));if(!d) return;
double b0=(1.+(4.*tau0*(tau0+ksi0)))/d;
double b1=2.*(1.-4.*tau0*tau0)/d;
double b2=(1.+(4.*tau0*(tau0-ksi0)))/d;
double a1=2.*(1.-4.*tau1*tau1)/d;
double a2=(1.+(4.*tau1*(tau1-ksi1)))/d;
a0=1;
Сама реализация фильтра есть, фильтр работает, но формулу расчета коэффициентов мне найти не удалось.
Как соответственно и информацию, что означают его параметры.
Самурай
Цитата(strap89 @ Sep 17 2018, 11:22) *
Здравствуйте!
Помогите разобраться пожалуйста. Есть цифровой БИХ-фильтр 2-го порядка, режекторный.
Есть алгоритм расчета его коэффициентов. И есть пара коэффициентов, определяющих параметры фильтра (это мои предположения).
Не могли бы Вы подсказать мне, какой тип фильтра тут использован и что определяют его параметры. Сам алгоритм:
void makefiltr2coeff(filtr2& flt,double Tsam,double f0,double f1,double ksi0,double ksi1)
{
if(!f0||!f1||!Tsam||!ksi0||!ksi1)
return;
Tsam*=scaleTsam;
double om0=2.*M_PI*f0;
double om1=2.*M_PI*f1;
double tau0=.5/tan(Tsam*om0/2.);
double tau1=.5/tan(Tsam*om1/2.);
double d=1.+(4.*tau1*(tau1+ksi1));if(!d) return;
double b0=(1.+(4.*tau0*(tau0+ksi0)))/d;
double b1=2.*(1.-4.*tau0*tau0)/d;
double b2=(1.+(4.*tau0*(tau0-ksi0)))/d;
double a1=2.*(1.-4.*tau1*tau1)/d;
double a2=(1.+(4.*tau1*(tau1-ksi1)))/d;
a0=1;
Сама реализация фильтра есть, фильтр работает, но формулу расчета коэффициентов мне найти не удалось.
Как соответственно и информацию, что означают его параметры.



Ваш IIR 2-ого порядка получен через билинейное преобразование аналогового фильтра-прототипа общего вида:



т.е. через замену и

Выводить не буду, там все тривиально, но больно много писанины...

Для режекторного фильтра необходимо выполнение условий: f0 = f1 = частоте подавления, ksi0 < ksi1, оба эти коэффициента влияют на уровень затухания и ширину полосы подавления, если ksi0=0, подавление максимальное.

strap89
Цитата(Самурай @ Sep 17 2018, 23:34) *
Ваш IIR 2-ого порядка получен через билинейное преобразование аналогового фильтра-прототипа общего вида:



т.е. через замену и

Выводить не буду, там все тривиально, но больно много писанины...

Для режекторного фильтра необходимо выполнение условий: f0 = f1 = частоте подавления, ksi0 < ksi1, оба эти коэффициента влияют на уровень затухания и ширину полосы подавления, если ksi0=0, подавление максимальное.

Спасибо за объяснение.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.