Перейти к содержанию
    

Цифровой фильтр Бесселя 2-го порядка

Есть небольшая проблемка: требуется на лету считать параметры САБЖа: при прочих неизменных параметрах меняется нормированная частота (отношение частоты среза к частоте дискретизации). Раньше я пользовался букварём Титце и Шенка "Полупроводниковая схемотехника", а сейчас доступ к нему сильно ограничен (кто-то упёр). :twak:

Кто что посоветует? Буду благодарен за формулы, фрагменты исходников, или ссылки на них. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Таки решид проблему сам. Привожу фрагменты исходника на случай, если кому понадобится.

//---------------------------------
// описание структур
typedef struct
{
 double a, b;
}ab_Val;

typedef struct
{
 double D[3], C[2];
}IIR2_par;
//---------------------------------
// определение параметров
int GetIir2Parameters(double Ff, ab_Val &abv,  double K, IIR2_par *p)
{
 if(Ff == 0) return 1;
 double L = 1.0 / tan(M_PI * Ff);
 double a = abv.a, b = abv.b;
 double det = 1.0 + a * L + b * L * L;
 if(det == 0) return 2;
 double *C = p->C, *D = p->D;

 D[0] = K / det;
 D[1] = 0;
 D[2] = 0;
 C[0] = (1.0 - a * L + b * L * L) / det;
 C[1] = -(2 * b * L * L) / det;
 return 0;
}
//---------------------------------
// параметры для разных типов фильтров
// взято из книги П.Хоровиц, У.Хилл "Полупроводниковая схемотехника"
 static ab_Val abv[]=
 {
   {1.2872, 0.4142},  // ФКЗ
   {1.3617, 0.6180},  // Бесселя
   {1.4142, 1.0000},  // Баттерворта
   {1.3614, 1.3827},  // Чебышева 0.5 дБ
   {1.3022, 1.5515},  // Чебышева 1 дБ
   {1.1813, 1.7775},  // Чебышева 2 дБ
   {1.0650, 1.9305}   // Чебышева 3 дБ
 };
//---------------------------------
// вызов функции расчёта параметров
if(GetIir2Parameters(F_3db / f_sample, abv[i], 2.0, &iir2p)) goto __exit;

 

Методику расчёта взял из обозначенной книги. Несмотря на то, что всё это работает, у меня возник вопрос:

на самом ли деле D[1] и D[2] должны быть равны 0? Если следовать примеру - то да, если выводить по формулам, то нет. :( Я сделал, как в примере...

 

Редактирую, добавляю картинку со структурой этого фильтра.

post-2018-1107595497.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...