logo
Цифровая обработка сигналов

5.4.3. Проектирование цифровых бих-фильтров

Конечной задачей проектирования линейного цифрового фильтра будем считать расчет значений элементов векторов b числителя и а знаменателя его дискретной передаточной функции G(z), записанной в виде (5.7):

Если эти два вектора известны, осуществление самой фильтрации, как было сказано ранее, происходит путем применения процедуры filter, в которой аргументами выступают эти векторы.

Напомним, что представленная дискретная передаточная функция описывает в сжатой форме такое конечно-разностное уравнение фильтра:

(5.46)

Если n=0, фильтра называют нерекурсивным, а число m – порядком фильтра. Такой фильтр имеет конечную импульсную характеристику, поэтому его тоже называют КИХ-фильтром.

В случае n>0 фильтр называется рекурсивным. Порядком фильтра при этом называют наибольшее из чисел m и n. В этом случае импульсная характеристика фильтра является бесконечной, и его тоже называют БИХ-фильтром. БИХ-фильтры представляют собой некоторые налоги динамических звеньев.

Одним из средств проектирования БИХ-фильтров, предусмотренных в пакете Signal, является разработка соответствующего аналогового прототипа, т.е.е нахождение передаточной функции по Лапласу непрерывного фильтра, и последующий переход к цифровому фильтру путем нахождения цифрового аналога непрерывного звена. Последнее можно осуществить с помощью билинейного преобразования s-плоскости в z-плоскость. Билинейное преобразование выполняется в соответствии с выражением:

(5.47)

где - частота дискретизации сигнала. При этом осьпреобразуется в единичную окружность наz-плоскости.

В пакете Signal билинейное преобразование осуществляется с помощью процедуры bilinear, к которой можно обратиться тремя способами:

[bd, ad] = bilinear (b, a, Fs, Fp);

[zd, pd, kd]= bilinear (z, p, Fs, Fp);

[Ad, Bd, Cd, Dd]= bilinear (A, B, C, D, Fs, Fp)

Все они преобразуют параметры, характеризующие аналоговый прототип фильтра, в аналогичные параметры, описывающие дискретный БИХ-фильтр. Вид и количество параметров определяют вид и число выходных. Параметр Fs задает частоту дискретизации в герцах. Параметр Fp не обязателен. Он определяет частоту в герцах, для которой значения АЧХ до и после выполнения преобразования должны совпадать, т.е. задает так называемые предыскажения.

Обращение в первой форме позволяет определить коэффициенты полиномов числителя и знаменателя дискретной передаточной функции фильтра вида (5.35) по заданным коэффициентам полиномов числителя и знаменателя непрерывной передаточной функции вида (5.34). Обращение во второй форме дает возможность вычислить нули, полюсы и коэффициент усиления дискретного фильтра по заданным аналогичным параметрам аналогового прототипа. И наконец, третья форма определяет матрицы дискретного пространства состояний фильтра по известным матрицам непрерывного пространства состояний.

Второй способ построения цифрового фильтра по его аналоговому прототипу заключается в таком преобразовании параметров аналогового фильтра в параметры дискретного фильтра, при котором импульсная характеристика последнего совпадала бы с импульсной характеристикой аналогового фильтра в точках через дискрет по времени. Это в MatLAB осуществляется применением процедуры impinvar.

[bz, az] = impinvar(b, a, Fs)

Здесь b и а – заданные векторы коэффициентов числителя и знаменателя передаточной функции аналогового прототипа фильтр , bz и az – вычисляемые коэффициенты числителя и знаменателя дискретной передаточной функции дискретного фильтра, Fs – заданная частота дискретизации сигнала в герцах. Если параметр Fs при обращении не указан, то по умолчанию он принимается равным 1 Гц.

Третий способ формирования дискретных фильтров – использование ранее рассмотренных процедур формирвания фильтров butter, cheby2 и ellip. Если при обращении к этим процедурам не указывать в конце списка входных параметров флажка s, то результатом работы этих процедур будут параметры именно цифровых фильтров.

Основное отличие применения этих функций для разработки цифровых фильтров заключается в другом представлении задаваемых частот в векторе Wc. Все частоты должны задаваться по отношению к так называемой частоте Найквиста. Частотой Найквиста называют половину частоты дискретизации сигнала.

Так как диапазон частот изменения дискретного сигнала всегда меньше частоты дискретизации, то все частотные характеристики дискретных фильтров определяются только внутри диапазона от 0 до частоты Найквиста. Поэтому все задаваемые в векторе Wc граничные частоты должны быть меньше единицы.

Существует еще две процедуры расчета БИХ-фильтров.

Процедура maxflat производит расчет обобщенного цифрового фильтра Баттерворта. Формы обращения к ней таковы:

[b, a]=maxflat (nb, na, Wc)

[b, a]=maxflat (nb, `sym`, Wc)

[b, a, b1, b2]=maxflat (nb, na, Wc)

[b, a]=maxflat (nb, na, Wc, `design_flag`)

Первое обращение позволяет вычислить коэффициенты b – числителя и а – знаменателя дискретной передаточной функции H(z) цифрового ФНЧ Баттерворта с частотой среза Wc, порядок числителя которой равен nb, а знаменателя – na.

При обращении второго вида вычисляются коэффициенты цифрового симметричного КИХ-фильтра Баттерворта. В этом случае принимается равным 0. Параметр nb должен быть четным.

Если обратиться к процедуре так, как указано в третьем обращении, указать в качестве выходных четыре величины, то дополнительные параметры b1 и b2 дадут коэффициенты двух полиномов, произведение которых является полиномом числителя b искомой дискретной передаточной функции, причем все нули полинома b1 равны -1, а полином b2 содержит все остальные нули полинома b.

Добавление в список входных параметров процедуры параметра `design_flag` позволяет изменять характер выводимой на экран информации. Если значение этого параметра равно trace, на экране отображаются параметры, используемые в процессе проектирования:

nb=0; na=2; w=0.5;

[b, a, b1, b2] = maxflat(nb, na, w, `trace`)

L

M

N

wo_min/pi

wo_max/pi

10.0000

0

2.0000

0

0.2394

9.0000

1.0000

2.0000

0.2394

0.3259

8.0000

2.0000

2.0000

0.3259

0.3991

7.0000

3.0000

2.0000

0.3991

0.4669

6.0000

4.0000

2.0000

0.4669

0.5331

5.0000

5.0000

2.0000

0.5331

0.6009

4.0000

6.0000

2.0000

0.6009

0.6741

3.0000

7.0000

2.0000

0.7641

0.7606

2.0000

8.0000

2.0000

0.7606

1.0000

b =

Columns 1 through 7

0.0414 0.2263 0.4932 0.5252 0.2494 0.0079 -0.0266 Columns 8 through 11

0.0008 0.0023 -0.0004 -0.0000

a =

1.0000 0 0.5195

b1 =

1 1 15 20 15 6 1

b2 =

0.0414 -0.0221 0.0049 -0.0004 -0.0000

Если же этому параметру задать значение plots, то на экран будут выведены графики амплитудной характеристики, группового времени замедления, а также графическое изображение нулей и полюсов:

[b, a, b1, b2] = maxflat(nb, na, w, `plots`)

b =

Colums 1 through 7

0.0414 0.2263 0.4932 0.5252 0.2494 0.0079 -0.0266 Colums 8 through 11

0.0008 0.0023 -0.0004 -0.0000

a = 1.0000 0 0.5195

b1 = 1 6 15 20 15 6 1

b2 =-0.0221 0.0049 -0.0004 -0.0000

Расчет БИХ-фильтра по заданной амплитудно-частотной характеристике производится процедурой yulewalk. Если набрать в командном окне MatLAB строку:

[b, a] = yulewalk (n, а, m)

то будут вычислены коэффициенты b числителя и а знаменателя дискретной передаточной функции БИХ-фильтра порядка n, ФЧХ которого задана векторами а (частоты в нормированных значениях) и m – соответствующих значений отношений амплитуд выхода и входа. Первый элемент вектора а должен быть равен 0, а последний – 1. Все остальные элементы должны быть расположены в неубывающем порядке. Частоты, при которых происходит скачок АЧХ, указываются два раза с разными значениями соответствующих им амплитуд.

Приведем пример расчета ФНЧ 8-го порядка и построим желаемую АЧХ и АЧХ полученного фильтра (рис. 5.47).

f = [0 0.5 0.5 1]

m = [1 1 0 0]

[b, a] = yulewalk(8, f, m)

[h, w] = fregz (b, a, 128)

plot (f, m, w/pi, abs (h))

grid, title (`Пример использования процедуры yulewalk`)

xlabel (`Нормализованная частота`)

ylabel (`А Ч Х`)