Проектирование цифрового БИХ-фильтра в Scilab

Нет ничего проще получения коэффициентов цифрового БИХ-фильтра в математической программе Scilab. Для этого существует функция iir().

Синтаксис функции:
[hz]=iir(n,ftype,fdesign,frq,delta)

Функция возвращает передаточную функцию фильтра.

Аргументы:

  • n — порядок фильтра, целое положительное число;
  • ftype — строка, задающая тип фильтра, возможные значения:
    • ‘lp’ — ФНЧ (фильтр нижних частота);
    • ‘hp’ — ФВЧ (фильтр верхних частот);
    • ‘bp’ — ПФ (полосовой фильтр);
    • ‘sb’ — ЗФ (заграждающий фильтр);
  • fdesign — строка, задающая вид фильтра, возможные значения:
    • ‘butt’ — фильтр Баттерворта;
    • ‘cheb1’ — фильтр Чебышева первого рода;
    • ‘cheb2’ — фильтр Чебышева второго рода;
    • ‘ellip’ — эллиптический фильтр;
  • frq — двойной вектор [frq1 frq2], задающий дискретные часто´ты среза. Значение частоты должно лежать в диапазоне (0; 0.5]. Дискретная частота среза равна отношению частоты среза к частоте дискретизации. Для расчета ФНЧ и ФВЧ используется только параметр frq1. При расчете ПФ и ЗФ, параметр frq1 задет нижнюю частоту среза, а frq2 — верхнюю.
  • delta — двойной вектор  [delta1 delta2], задающий значения ошибок для фильтра Чебышева и эллиптического фильтра. delta1 используется в случае фильтра Чебышева первого рода. delta2 — в случае фильтра Чебышева второго рода. Оба значения — в случае эллиптического фильтра. Значение ошибки должно лежать в диапазоне (0; 1). Пульсации:
    • Для фильтра Чебышева первого рода в полосе пропускания: (1 − delta1) < Пульсации < 1;
    • Для фильтра Чебышева второго рода в полосе подавления: 0 < Пульсации < delta2;
    • Для эллиптического фильтра в полосе пропускания:
      (1 − delta1) < Пульсации < 1;
      в полосе подавления:
      0 < Пульсации < delta2.

Пример проектирования ФНЧ Баттерворта:

Fd = 4000; // Частота дискретизации, Гц
Fc = 500;  // Частота среза, Гц
n = 1;     // Порядок фильтра

[hz] = iir(n,'lp','butt',[Fc/Fd],[])

В результате получаем передаточную функцию:

hz =

0.2928932 + 0.2928932z
----------------------
- 0.4142136 + z

Автор

Дмитрий Бравиков

Инженер. Электронщик. Программист.

Проектирование цифрового БИХ-фильтра в Scilab: 4 комментария

    1. Нет. Чтобы удовлетворять теореме Котельникова, Fc/Fd должно быть меньше или равно 0,5. А за этим следит сама функция. Аргумент frq не должен быть больше 0,5.

  1. Как привести H(z) к виду B(z)
    ———- ?
    1 + A(z)
    Только вручную? Почему функция сама не выдает в нужном виде?
    Сейчас пробую функцию eqiir для расчета фильтра для акселерометров.

  2. И все же frq1 и frq2 это частота в относительных единицах, при этом в диапазоне от 0 до 0,5,
    поэтому надо рассчитывать отношение частот фильтра исходя из Fd/2/
    На графике
    hz=iir(3,’bp’,’ellip’,[.15 .25],[.08 .03]);
    [hzm,fr]=frmag(hz,256);
    plot2d(fr’,hzm’)
    xtitle(‘Discrete IIR filter: band pass 0.15 < fr < 0.25 ',' ',' ');
    q=poly(0,'q'); //to express the result in terms of the delay operator q=z^-1
    hzd=horner(hz,1/q)
    это очень хорошо видно.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.