мячин.ком

Построение простейших фильтров. Часть 2.

В этой статье пойдет речь о комплексных числах. Поэтому если вы о них не знаете, срочно узнайте.

Задача определения АЧХ для фильтра

Допустим, мы собрали какой-то фильтр. Хотим проверить как он работает. Очень хочется узнать какая у него АЧХ. Можно пропустить через него белый шум, а потом посмотреть спектрограмму. Можно пропустить через него синусоиды разных частот, и посмотреть результат. Всё это даст нам представление об АЧХ. Но это будут эмпирические данные, их никак не получится дальше использовать.

Ведь нужно будет искать определенные точки на АЧХ, крутизну срезов и пр., узнавать как они зависят от коэффициентов фильтра. Делать это опытным путём очень труднозатратно и в общем-то бессмысленно. Куда лучше выразить АЧХ этого фильтра через формулу. Так мы узнаем всё аналитически. И получим прямую зависимость параметров АЧХ от коэффициентов.

Таким образом, перед нами стоит задача: выразить АЧХ формулой.

Комплексные числа

Что такое комплексные числа? Рассказываю кратко. Это числа вида a+bi. Число i - это мнимая единица, со свойством i2 = -1. Все комплексные числа - это комплексная плоскость:

Две оси - одна чисто действительная, другая чисто мнимая. Комплексные числа складываются как вектора на плоскости. Кроме того, комплексные числа определяются углом и расстоянием до нуля (то, что называется модуль числа). При перемножении комплексных чисел их углы складываются, а модули перемножаются. Если эти вещи для вас дикие - срочно идите читать про комплексные числа.

У комплексных чисел два представления - одно a+bi, а другое - угол и расстояние. Когда складываем - используем первое, когда перемножаем - используем второе. Вот связь между ними:

Ро - это расстояние (модуль). Фи - это угол.

Как это может пригодиться при построении фильтров и в синтезе вообще? Очень просто. На самом деле, комплексные числа очень просто и удобно для нас описывают гармонические колебания. Любое гармоническое колебание сразу переводится в показательную функцию. Как? Начнем с простого случая:

Как видите последовательность:

cos(1pi) cos(2pi) cos(3pi) cos(4pi) cos(5pi) cos(6pi)

Заменяется на последовательность:

(-1)1 (-1)2 (-1)3 (-1)4 (-1)5 (-1)6

Как это выглядит в общем случае? Комплексное число с модулем равным 1, при последовательном возведении в степень просто кружится по единичному кругу:

И если при этом взять проекцию на ось, то получим как раз гармоническое колебание. Таким образом, если переходить из вещественного сигнала в комплексный, то получаем что любое гармоничское колебание - это последовательность:

z1 z2 z3 z4 z5 z6 ... zn ..

Для того чтобы перейти обратно к вещественному сигналу - просто берем проекцию на действительную ось.

Комплексная АЧХ

Что будет если гармоническое колебание умножить на число?

Было:

z1 z2 z3 z4 z5 z6 ... zn ..

Стало:

Az1 Az2 Az3 Az4 Az5 Az6 ... Azn ..

При проекции просто увеличится амплитуда в A раз. Но это в том случае, если А - это обычное вещественное число. А если А - это комплексое число? Например, так:

Было:

z1 z2 z3 z4 z5 z6 ... zn ..

Стало:

iz1 iz2 iz3 iz4 iz5 iz6 ... izn ..

Число i при умножении не меняет модуль числа, но поворачивает его на 90o против часовой стрелки. Это означает просто сдвиг фазы этого гармонического колебания. Всё это означает то, что мы можем строить комплексную АЧХ - в ней каждой частоте будет соответствовать комплексное число. Модуль этого числа покажет как изменилась амплитуда гармонического колебания с такой частотой. Угол этого числа (или как говорят, аргумент числа) покажет как изменилась фаза колебания. В результате получается АЧХ с исчерпывающей информацией о воздействии на каждую частоту. Если взять модуль этой АЧХ - получим обычную нашу АЧХ, описанную в первой части этой статьи.

Осталась еще одна деталь. Формула этого z для заданной частоты. Вот она:

Всё. Вроде бы мы готовы считать АЧХ для наших биквадратных фильтров. (И не только...)

Построение комплексной АЧХ для фильтра

Начнем с общего случая. Пусть задан фильтр с двумя буфферами:

inn ... in4 in3 in2 in1 input
outn ... out4 out3 out2 out1 ?

Как он будет воздействовать на определенную частоту? Для этого построим комплексное число z по указанной выше формуле. Построим ряд из его степеней и пропустим через фильтр. Теоретически должно получится так:

Входные значения:

z1 z2 z3 z4 z5 z6 ... zn ..

Выходные значения (A - комплексное, ведь могла измениться фаза):

Az1 Az2 Az3 Az4 Az5 Az6 ... Azn ..

Это как раз и есть то утверждение, что линейное преобразвание переводит гармоническое колебание в гармоническое с той же частотой. И это проверенный факт, на него можно положиться. Теперь посчитаем это A. Пусть прошло k отсчетов. Мы точно знаем что:

input = zk

in1 = zk-1

...

inn = zk-n

C другой стороны, выходные значения выражаются через неизвестное A:

output = Azk

out1 = Azk-1

...

outn = Azk-n

Подставляем всё в формулу вычисления текущего значения фильтра:

output = a0input + a1in1 + ... + aninn + b1out1 + ... + bnoutn;

Azk = a0zk + a1zk-1 + .. + anzk-n + b1Azk-1 + ... + bnAzk-n

Всё неизвестное переносим в левую часть, выносим А:

A(zk - b1zk-1 - ... - bnzk-n) = a0zk + a1zk-1 + .. + anzk-n

Разделим обе части на zk-n:

A(zn - b1zn-1 - ... - bn) = a0zn + a1zn-1 + .. + an;

Получаем формулу АЧХ в чистом виде:

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

(Упс, там опечатка - не an в конце, а a0)

Сведение фильтра к простейшим

В результате получили отношение двух многочленов от комплексной переменной с вещественными коэффициентами. Условно запишем так:

A = P(z') / Q(z');

Для того чтобы продвинутся дальше, нам необходимо обратиться к алгебре. А именно к следующему справедливому утверждению:

Любой многочлен с вещественными коэффициентами раскладывается на многочлены с вещественными коэффициентами степени не выше 2, причем единственным образом.

Т.е. например: x3 + 1 = (x+1)(x2 - x + 1). А дальше уже разложить нельзя. Бывают неразложимые многочлены 2 степени. Но не бывает неразложимых многочленов 3, 4, 5 и т.д. степеней.

По этой теореме следует что мы имеем такое разложение:

A = ( P1(z')P2(z')...Pl(z') ) / ( Q1(z')Q2(z')...Qm(z') );

Далее нужно понять что происходит с АЧХ при последовательном применении фильтров? Ответ прост: мы просто будем умножать гармонические колебания сначала на одно комплексное число, потом на другое. То есть АЧХ перемножаются! Это означает что действие нашего фильтра эквивалентно последовательному действию фильтров с такими АЧХ:

A = P1(z');

...

A = Pl(z');

A = 1 / Q1(z');

...

A = 1 / Qm(z');

Где все эти многочлены степени либо 1, либо 2. А это значит, что соответствующие им фильтры зависят от максимум двух предыдущих отсчетов. То есть все эти фильтры - биквадратные. Это и означает что всякий фильтр раскладывается в каскад биквадратных.

Формулы и АЧХ простейших биквадратных фильтров

Для начало выясним что такое неразложимый квадратный трехчлен. Это выражение ax2 + bx + c, которое не имеет вещественных корней. На самом деле, он имеет два комплексных корня, корорые сопряжены, то есть выглядят так: x1 = с + di, x2 = c - di. Поскольку эти корни - это комплексные числа, то они имеют модуль и угол. Их модули будут одинаковы, а углы одного значения, но разного знака:

Этот угол будет виден далее при построении АЧХ - он будет указывать на точку экстремума.

Итак, четыре типа простейших фильтров и комплексные формулы их АЧХ:

1. A = a(z' - z0), где z0 - вещественное;

2. A = a / (z' - z0), где z0 - вещественное;

3. A = a(z' - z1)(z' - z2), где z1 и z2 - сопряжены;

4. A = a / (z' - z1)(z' - z2), где z1 и z2 - сопряжены.

Когда выражение вида (z' - z0) стоит в числителе - это называется ноль фильтра. Когда оно стоит в знаменатале - это называется полюс фильтра. Поэтому бывают однополюсные, двухполюсные, четырехполюсные фильтры и пр. Вообще, полюс - это точка в которой функция уходит в бесконечность. Поэтому когда полюс приближается к области определения АЧХ появляется явление резонанса.

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

Первый тип фильтров (с одним нулем):

1.1. z0 < 0;

Нормируя АЧХ (так, чтобы максимальное значение модуля было 1) получаем такую схему фильтра (отображены веса) :

0 1 / (1 - z0) - z0 / (1 - z0)
0 0 ?

output = (- z0input + in1) / (1 - z0)

Вот картина АЧХ для разных параметров z0:

При значениях от 1.0 до бесконечности получается та же самая АЧХ, но с другим смещением фазы, поэтому мы их не рассматриваем.

1.2. z0 > 0;

Схема фильтра:

0 -1 / (1 + z0) z0 / (1 + z0)
0 0 ?

output = (z0input - in1) / (1 + z0)

Картина АЧХ при разном параметре z0:

Второй тип фильтров (однополюсные фильтры):

2.1. z0 > 0

Схема фильтра:

0 0 (1 - z0)
0 z0 ?

output = (1 - z0)input + z0out1

Картина АЧХ при разном параметре z0:

2.1. z0 < 0

Схема фильтра:

0 0 (1 + z0)
0 z0 ?

output = (1 + z0)input + z0out1

Картина АЧХ при разном параметре z0:

На двух последних графиках видно где АЧХ сгущается - это значит что при изменении параметра полюс приближается к АЧХ. Если бы не было нормирующего коэффициента мы бы увидели как АЧХ "взлетела" бы в бесконечность вблизи точки 0.5 (или точки 0.0 для предыдущего фильтра).

Третий тип фильтров (фильтры с двумя нулями)

3. Угол равен w (0...0.5), модуль корней равен r (0...1)

Схема фильтра:

1/c - 2r cos(2pi w)/c r2/c
0 0 ?

где с = 1 + 2r |cos(2pi w)| + r2

Картина АЧХ: угол равен 0.2 при разном параметре r:

Картина АЧХ: угол равен 0.42 при разном параметре r:

Четвертый тип фильтров (двухполюсные фильтры)

4. Угол равен w (0...0.5), модуль корней равен r (0...1)

Схема фильтра:

0 0 c
r2 - 2r cos(2pi w) ?

где с = (1 - r) sqrt( (cos(4pi w) - r)2 + sin2(4pi w) )

Картина АЧХ: угол равен 0.42 при разном параметре r:

В данной схеме мы нормировали не максимум, а лишь амплитуду резонантной частоты.

Схемы построения фильтров

Эти простейшие фильтры приведены для того, чтобы понять какие существуют особенности у графиков АЧХ, ведь в конце концов АЧХ любого фильтра будет состоять из произведения приведенных выше простейших АЧХ. Однако, сами по себе они еще не дают сильного инструмента для создания фильтров. Перебирая коэффициенты вручную, вы сможете достигнуть каскада из 3-4 фильтров. Но дальше ситуация усложнится. А ведь хочется просто иметь фильтр с АЧХ, которая бы удовлетворяла каким-то требованиям.

Для этого нужно ставить другую задачу: придумать схемы, которые позволят создавать каскады таких фильтров, при этом приближая АЧХ фильтра к некоторой идеальной (нами задуманной). И такие схемы существуют. Но об этом как-нибудь позже.

 

мячин.ком