Что такое ких фильтр
Перейти к содержимому

Что такое ких фильтр

  • автор:

КИХ-фильтр

Фильтр с конечной импульсной характеристикой (нерекурсивный фильтр, КИХ-фильтр, FIR-фильтр) — один из видов линейных электронных фильтров, характерной особенностью которого является ограниченность по времени его импульсной характеристики (с какого-то момента времени она становится точно равной нулю). Такой фильтр называют ещё нерекурсивным из-за отсутствия обратной связи. Знаменатель передаточной функции такого фильтра — некая константа.

Динамические характеристики

y\left (n\right)=b_0 x\left(n\right)+ b_1 x\left(n-1 \right)+. +b_P x\left(n-P \right)

Разностное уравнение, описывающее связь между входным и выходным сигналами фильтра: где P — порядок фильтра, x(n) — входной сигнал, y(n) — выходной сигнал, а bi — коэффициенты фильтра. Иными словами, значение любого отсчета выходного сигнала определяется суммой масштабированных значений P предыдущих отсчетов. Можно сказать иначе: значение выхода фильтра в любой момент времени есть значение отклика на мгновенное значение входа и сумма всех постепенно затухающих откликов P предыдущих отсчетов сигнала, которые всё ещё оказывают влияние на выход (после P -отсчетов импульсная переходная функция становится равной нулю, как уже было сказано, поэтому все члены после P -го тоже станут равными нулю). Запишем предыдущее уравнение в более ёмком виде:

y \left( n \right) = \sum_<i=0></p>
<p>^ b_i x \left( n-i \right)» width=»» height=»» /></p>
<p>Для того, чтобы найти ядро фильтра положим</p><div class='code-block code-block-1' style='margin: 8px 0; clear: both;'>
<!-- 1joomlaumnik -->
<script src=

x(n) = δ(n)

где δ(n) — дельта-функция. Тогда импульсная характеристика КИХ-фильтра может быть записана как:

h\left (n\right)=\sum_<i=0></p>
<p>^b_i \delta\left(n-i\right)» width=»» height=»» /></p>
<p>Z-преобразование импульсной характеристики даёт нам передаточную функцию КИХ-фильтра:</p><div class='code-block code-block-2' style='margin: 8px 0; clear: both;'>
<!-- 2joomlaumnik -->
<script src=

H\left(z\right)=\sum_<i=0></p>
<p>^b_i z^» width=»» height=»» /></p>
<h3>Свойства</h3>
<p>КИХ-фильтр обладает рядом полезных свойств, из-за которых он иногда более предпочтителен в использовании, чем БИХ-фильтр. Вот некоторые из них:</p>
<ul>
<li>КИХ-фильтры устойчивы.</li>
<li>КИХ-фильтры при реализации не требуют наличия обратной связи.</li>
<li>Фаза КИХ-фильтров может быть сделана линейной</li>
</ul>
<h3>См. также</h3>
<ul>
<li>Электронный фильтр</li>
<li>Цифровой фильтр</li>
<li>Фильтр с бесконечной импульсной характеристикой</li>
<li>Z-преобразование</li>
<li>Проектирование фильтров</li>
<li>Фильтр Линквица-Райли</li>
</ul>
<h2>КИХ фильтры и их использование в аудиоплатформах Symetrix</h2>
<p><img decoding=

В 2020-м году сложно встретить специалиста в индустрии профессионального аудио, который никогда не слышал про FIR фильтры. Данная аббревиатура расшифровывается как Finite Impulse Response или фильтр с конечной импульсной характеристикой. Тем не менее, мало кто знает, где и как именно используются данные фильтры, а также какие задачи из своей повседневной жизни можно решать с их помощью.

В цифровой обработке сигналов есть два принципиально разных типа фильтров – БИХ и КИХ (IIR и FIR соответственно). БИХ фильтры, как вы уже, наверное, догадались, это фильтры с бесконечной импульсной характеристикой. Их главное отличие состоит в том, что они являются рекурсивными и используют обратную связь. То есть для вычисления значения выхода им требуется как значение входа, так и задержанное значение выхода. Выражаясь простым языком, БИХ фильтр — это самый простой и привычный фильтр, который может быть как аналоговый, так и цифровой. Такие фильтры можно встретить в кроссоверах для пассивных акустических систем, в усилителях низкой частоты, да и практически в любой аппаратуре, работающей с аналоговым сигналом. Это и неудивительно, так как данные фильтры имеют ряд преимуществ: дешевизна и доступность аналоговых прототипов, простота в расчетах и малая задержка сигнала. Но при этом у нас отсутствует возможность формирования произвольного амплитудно-частотного отклика, так как можно выбрать только один из стандартных, как правило, являющихся копией аналогового фильтра. К ним относятся фильтры низких и высоких частот, полосовые фильтры, фильтр Баттерворта, фильтр Бесселя, фильтр Чебышева и прочие. Также БИХ фильтры не всегда устойчивы, ведь в их цепи может образоваться положительная обратная связь, которая приведет к самовозбуждению даже при отсутствии сигнала на входе.

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

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

Адаптивные фильтры принимают сразу два сигнала, и алгоритм ищет корреляции между ними. Это позволяет активно применять их в устройствах шумоподавления, в том числе в носимой электронике, а также в устройствах подавления акустического эха AEC (Acoustic Echo Canceler).

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

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

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

Существует огромное количество различного программного обеспечения для дизайна КИХ фильтров, многие из них стоят приличных денег, в связи с чем мы бы хотели поделиться бесплатным ПО, которое стабильно выполняет свою функцию.

Для получения параметров помещения вам понадобится REW – Room EQ Wizard. Данное ПО поддерживает загрузку калибровочных фалов для микрофона, а также калиброванный цифровой измерительный микрофон minidsp umik-1. При помощи REW вы без труда проведете проверку помещения свипами и в конце получите подробные АЧХ и ФЧХ конкретной точки вашего помещения. ПО также позволяет работать одновременно с несколькими замерами, что упрощает работу.

После проведения измерений их можно экспортировать и использовать для дизайна своего КИХ фильтра. Для данной задачи есть также бесплатное, но очень мощное ПО RePhase. При помощи него можно посчитать необходимый для выравнивания характеристик фильтр определенной длины. В данном случае чем сильнее требуется коррекция, тем большее количество коэффициентов нужно использовать для достижения высокой точности или понижать точность для экономии ресурсов. Программа высчитывает коэффициенты коррекции автоматически и от пользователя нужны лишь измерения и параметры девиации выходных АЧХ и ФЧХ.

Результатом работы ПО будет являться таблица коэффициентов в текстовом формате, которая и будет являться инструкциями к вашему КИХ фильтру. Для применения данных инструкций в Symetrix Composer есть модули, поддерживающие до 1024 коэффициентов, чего вполне достаточно для самой сложной коррекции. При наличии большого количества сигналов для обработки не стоит волноваться, так как вычислительные мощности аудиоплатформы Symetrix Radius NX позволяют использовать внушительное количество КИХ фильтров одновременно с маршрутизацией, динамической обработкой и логическими сигналами управления.

Что такое ких фильтр

+7 (495) 777-33-51

Поскольку импульсная характеристика, необходимая для реализации идеального фильтра нижних частот бесконечно велика, то невозможно разработать идеальный КИХ-фильтр нижних частот.

Аппроксимация конечной длины идеального импульсного отклика приводит к наличию пульсаций как в полосе пропускания, так и в полосе задержки, а также к ненулевой ширине перехода между полосой пропускания и полосой задержки.

Технические характеристики КИХ-фильтра

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

КИХ-фильтры обычно состоят из фильтров, которые соответствуют определенным проектным спецификациям, т. е. имеют ширину перехода и максимальную ширину перехода пульсации полосы пропускания/ задержки, не превышающие допустимых значений.

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

В качестве примера рассмотрим конструкцию КИХ-фильтра, отвечающую следующим требованиям:

  1. Частота среза: 0.4π rad/образец
  2. Ширина перехода: 0.06π rad/образец
  3. Максимальная полоса пропускания/задержки: 0.05

Фильтр можно легко спроектировать с помощью алгоритма импульсной характеристики с усечением и окнами, если мы используем окно Кайзера. Если зафиксировать допустимую ширину перехода и пиковую рябь, порядок определяется за нас. Обычно спецификации превышаются, потому что порядок округляется до следующего целого числа, большего, чем фактическое требуемое значение.

Коротко о нас

Компания «ИнтеллектИнтТех» — это команда, сочетающая в себе высокий профессионализм инженеров «старой школы» с неисчерпаемым энтузиазмом и свежим взглядом на разработку молодых технических специалистов. Уже более десяти лет мы успешно занимаемся разработкой и производством радиоэлектронной аппаратуры, создавая оборудование как в инициативном порядке, так и выполняя разработку высокотехнологичных изделий различных областей применения для различных заказчиков.

В основе деятельности компании «ИнтеллектИнтТех» лежит сертифицированная система менеджмента качества, соответствующая ГОСТ ISO 9001-2011.. Система менеджмента качества компании, аттестованная в 2016 году по ISO 9001-2015 постоянно подтверждается аудитами и гарантирует качество нашей продукции.

Введение

Цифровой фильтр – фильтр, обрабатывающий цифровой сигнал с целью выделения и (или) подавления определённых частот этого сигнала.

  • Разделяют два больших класса цифровых фильтров:
  • Фильтры с конечной импульсной характеристикой (КИХ-фильтры, FIR)
  • Фильтры с бесконечной импульсной характеристикой (БИХ-фильтры, IIR)

Зачем они нужны? Чем нас не устраивают аналговые фильтры? Давайте рассмотрим преимущества и недостатки цифровых фильтров.

Преимущества цифровых фильтров:

  • Высокая точность и воспроизводимость (у аналоговых фильтров это определяется разбросом номиналов компонентов)
  • Гибкость (можно изменять характеристику, не затрагивая аппаратную часть)
  • Компактность (например, аналоговые ФНЧ могут занимать много места, в то время как цифровые имеют одинаковые габариты при любой форме АЧХ в пределах одной частоты дискретизации)

Недостатки цифвровых фильтров:

  • Сложность работы в реальном времени (все вычисления должны пройти менее, чем за один период дискретизации)
  • Высокая стоимость

Начнём изучение фильтров с наиболее простого типа — КИХ-фильтров.

КИХ-фильтры

Давайте сразу рассмотрим пример. Сгенерируем в Matlab зашумлённый сигнал частотой 0.5 Гц, оцифрованный с частотй дискретизации 10 Гц. Для начала, объявим переменную fs , которой присвоим значение частоты дискретизации, создадим массив временных отсчётов ts , и переменную N , которой присвоим количество получившихся отсчётов:

fs = 10; ts = 0: 1/fs : 10-1/fs; N = length(ts);

Теперь создадим сам синусоидальный сигнал x с частотой 0.5 Гц, зашумлённый случайным сигналом, амплитуда которого изменяется в диапазоне от a=-0.01 до b=0.1 :

a = -0.01; b = 0.1; x = (a + (b - a) * rand(1, N)).*sin(2*pi*0.5*ts);

Построим график сигнала x :

plot(x), grid on; xlabel('Время'); ylabel('Амплитуда'); title('Сигнал x(n)');

И получим результат:

Возьмём первые пять отсчётов с x(1) по x(5) , найдём их среднее арифметическое, запишем его в новый массив в элемент y(1) , затем возьмём отсчёты с x(2) по x(6) , также рассчитаем их среднее значение и запишем его в элемент y(2) и так далее, пока не пройдём по всему сигналу:

y = zeros(1,N+6); for i = 6 : length(x) y(i) = (x(i-1) + x(i-2) + x(i-3) + x(i-4) + x(i-5))/5; end

А теперь построим сигналы x и y друг под другом в одном окне:

subplot(2,1,1); plot(x), grid on; xlabel('Время'); ylabel('Амплитуда'); title('Сигнал x(n)'); subplot(2,1,2); plot(y(1:100)), grid on; xlabel('Время'); ylabel('Амплитуда'); title('Сигнал y(n)');

Результаты выполнения получившегося скрипта показаны ниже:

И что же мы видим? Сигнал y(n) (на рисунке снизу) похож на сигнал x(n) (сверху), однако имеет некоторую задержку и более гладкую форму. Получается, что мы только что применили к сигналу x(n) фильтр нижних частот (ФНЧ)! Спроектированный нами фильтр называется скользящее среднее. Уравнение данного фильтра имеет вид:

\begin{equation*} y[n]=\sum\limits_{k=0}^{M-1} h(k) \cdot x(n-k) \text{, где} \sum\limits_{k=0}^M h(k) = 1 \end{equation*}

(1)

А его структурная схема выглядит так:

Структурная схема фильтра

В каждый момент времени берётся текущий отсчёт и 4 предыдущих, каждый из которых домножается на коэффициент 1/5, затем эти результаты складываются и полученная сумма поступает на выход. Процедура повторяется, пока весь сигнал не будет обработан.

Свёртка

А что, если вместо коэффициентов 1/5 взять что-то другое? На самом деле, уравнение (1) представляет собой частный случай операции свёртки:

\begin{equation*} y[n] = x[n] \ast h[n]=\sum\limits_{k=0}^{M-1} h(k) \cdot x(n-k), \end{equation*}

(2)

где , — длина , — длина

Это уравнение и является уравнением КИХ-фильтра. Его структурная схема выглядит так:

Структурная схема КИХ-фильтра

Теорема о свёртке

Со свёрткой связана следующая теорема:

\begin{equation*} x[n] * h[n] \leftrightarrow X[m] \cdot H[m] \end{equation*}

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

(3)

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

Мы выше говорили: “фильтры с конечной импульсной характеристикой, фильтры с бесконечной импульсной характеристикой”. А что же такое “импульсная характеристика”? Давайте вспомним на примере фильтров.

Импульсная характеристика КИХ-фильтра

Импульсная характеристика фильтра — это выходная последовательность фильтра во временной области при подаче на вход фильтра дельта-функции, или функции Дирака — единственного отсчёта, равного единице (единичного импульса), которому предшествуют и за которым следуют нулевые отсчёты.

Возьмём предыдущий пример из Matlab и вместо исходного сигнала x подставим в него функцию Дирака:

clear; fs = 10; ts = 0: 1/fs : 10-1/fs; N = length(ts); x = zeros(N,1); x(5) = 1; subplot(2,1,1); stem(x), grid on; xlabel('Время'); ylabel('Амплитуда'); title('Функция Дирака'); y = zeros(1,N+6); for i = 6 : length(x) y(i) = (x(i-1) + x(i-2) + x(i-3) + x(i-4) + x(i-5))*1/5; end subplot(2,1,2); stem(y(1:100)), grid on; xlabel('Время'); ylabel('Амплитуда'); title('Импульсная характеристика');

Результат выполнения скрипта показан ниже:

Из рисунка видно, что импульсная характеристика фильтра представляет собой 5 отсчётов амплитудой 0.2 (или 1/5). Получается, что мы с вами видим ни что иное, как коэффициенты фильтра. Поэтому коэффициенты КИХ-фильтра также называют его импульсной характеристикой.

Проектирование КИХ-фильтров

Теперь возникает вопрос: как рассчитать коэффициенты, чтобы получить требуемую АЧХ фильтра? Самый простой способ: “рисуем” необходимую АЧХ в частотной области, делаем обратное ДПФ от этой АЧХ и получаем набор коэффициентов во временной области. Наверняка, каждый из вас мечтает увидеть фильтр с идеально прямоугольной АЧХ. Возможно ли такое? Давайте разбираться. Что из себя представляет ДПФ от идеально прямоугольного сигнала? Правильно, функцию , которую мы рассматривали, когда изучали растекание спектра ДПФ:

Функция

Данная функция бесконечна во временной области, поэтому для реализации идеально прямоугольной АЧХ нам потребуется бесконечное количество коэффициентов фильтра. Получается, чем больше мы используем коэффициентов h[n] , тем больше АЧХ фильтра будет похожа на прямоугольную. Вроде бы логично — возьми побольше коэффициентов, получишь хороший фильтр. Но не всё так просто: в реальности мы не можем увеличивать количество коэффициентов фильтра, т.к. это приведёт к дополнительным операциям перемножения, каждая из которых вызывает задержку. Для того, чтобы система работала в реальном времени, нужно, чтобы все вычисления по формуле (2) производились за время, не превышающее один период дискретизации. Вот и простейшее ограничение.

Давайте попробуем на примере. Создадим сигнал x(n) , состоящий из N нулевых отсчётов, затем присвоим первым 200 отсчтётам значение 1. Это будет наша требуемая форма АЧХ:

clear; fs = 1000; % частота дискретизации ts = 0:1/fs:1-1/fs; % массив временных отсчётов N = length(ts); % длина массива временных отсчётов x = zeros(N,1); x(1:200) = 1;

Рассчитаем ОДПФ от сигнала x(n) , для удобства сдвинем его с помощью ifftshift , отбросим мнимую часть и присвоим полученный результат сигналу y(n) . Далее построим графики сигнала x(n) , и, чтобы лучше рассмотреть сигнал у(n) , график его 200 центральных отсчётов.

y = real(ifftshift(ifft(x))); subplot(2,1,1); plot(x), grid on; xlabel('Частотные отсчёты'); ylabel('Амплитуда'); title('Ожидаемая АЧХ, x(n)'); subplot(2,1,2); plot(N/2-100:N/2+100-1,y(N/2-100:N/2+100-1)), grid on; xlabel('Временные отсчёты'); ylabel('Амплитуда'); title('Фрагмент полученной импульсной характеристики, y(n)');

Результат выполнения скрипта показан ниже:

Теперь давайте анализировать реальную АЧХ от спроектированного фильтра. Для этого создадим сигнал a(n) , состоящий из N нулевых отсчётов, затем присвоим первому отсчёту 1. Таким образом, получим функцию Дирака, спектр которой является константой на всей частотной оси:

a = zeros(N,1); a(1) = 1;

Теперь попробуем пропустить функцию Дирака через спроектированный ранее фильтр y(n) , при этом будем использовать разное количество отсчётов y(n) :

figure; Nf1 = 5; af1 = filter(y(N/2-Nf1:N/2+Nf1-1),1,a); subplot(2,2,1); plot(abs(fft(af1))), grid on; xlabel('Частотные отсчёты'); ylabel('Амплитуда'); title('АЧХ фильтра, N=10'); Nf2 = 10; af2 = filter(y(N/2-Nf2:N/2+Nf2-1),1,a); subplot(2,2,2); plot(abs(fft(af2))), grid on; xlabel('Частотные отсчёты'); ylabel('Амплитуда'); title('АЧХ фильтра, N=20'); Nf3 = 25; af3 = filter(y(N/2-Nf3:N/2+Nf3-1),1,a); subplot(2,2,3); plot(abs(fft(af3))), grid on; xlabel('Частотные отсчёты'); ylabel('Амплитуда'); title('АЧХ фильтра, N=50'); Nf4 = 50; af4 = filter(y(N/2-Nf4:N/2+Nf4-1),1,a); subplot(2,2,4); plot(abs(fft(af4))), grid on; xlabel('Частотные отсчёты'); ylabel('Амплитуда'); title('АЧХ фильтра, N=100');

Результат выполнения скрипта показан ниже:

Из графиков видно, что, чем больше мы используем отсчётов нашего фильтра (а количество отсчётов – это порядок цифрового фильтра), тем более его характеристика становится похожа на идеальную. Однако, стоит обратить внимание, что на вершине АЧХ всех наших фильтров видны пульсации независимо от того, сколько используется отсчётов в импульсной характеристике. Эти пульсации называются пульсации Гиббса и возникают из-за медленной сходимости ряда Фурье, которая обусловлена наличием разрыва функции на частоте среза полосы пропускания фильтра. С увеличением числа отсчетов уменьшается длительность выбросов на вершине АЧХ, но их амплитуда не меняется и составляет примерно 9% от амплитуды АЧХ на частоте среза.

Окна при проектировании КИХ-фильтров

Запишем выражение (3) следующим образом:

\begin{equation*} h^\infty[k] \cdot w[k] \leftrightarrow H^\infty [m] * W[m] \end{equation*}

(4)

  • — бесконечная импульсная характеристика идеального фильтра
  • — окно, наложенное на бесконечную импульсную характеристику
  • и — их ДПФ

Получается, что, когда мы берём какое-то ограниченное количество отсчётов от импульсной характеристики идеального фильтра, мы умножаем эту импульсную характеристику на прямоугольное окно, спектр которого мы рассматривали выше. Эта процедура во временной области эквивалентна свёртке спектра идеальной характеристики и спектра ограниченной импульсной характеристики в частотной области. Ниже приведён листинг, моделирующий выражение (4):

clear; fs = 100; % частота дискретизации ts = -20:1/fs:20-1/fs; % временные отсчёты N = length(ts); % длина массива временных отсчётов % Идеальный прямоугольный спектр от бесконечного числа отсчётов Hinf = zeros(N,1); Hinf(N/2-750:N/2+749) = 1; % Спектр прямоугольного окна - sinc(x) W = sinc(ts); subplot(2,1,1); plot(Hinf), grid on, hold on; plot(W); xlabel('Частотные отсчёты'); ylabel('Амплитуда'); title('АЧХ фильтра с бесконечной характеристикой Hinf(n) и окна W(n)'); % Свёртка спектров c = conv(Hinf, W); subplot(2,1,2); plot(c), grid on; xlabel('Частотные отсчёты'); ylabel('Амплитуда'); title('Свёртка Hinf(n) и W(n)');

Результат выполнения скрипта показан ниже:

Чтобы уменьшить амплитуду пульсаций, как и в случае с ДПФ, при проектировании КИХ-фильтров используют окна, отличные от прямоугольного. Давайте модифицируем наш листинг “Анализ АЧХ фильтра, часть 4” и добавим в строчках 26, 34, 42, 50 умножение на окно Хэмминга:

. af1 = filter(y(N/2-Nf1:N/2+Nf1-1).*hamming(Nf1*2),1,a); . af2 = filter(y(N/2-Nf2:N/2+Nf2-1).*hamming(Nf2*2),1,a); . af3 = filter(y(N/2-Nf3:N/2+Nf3-1).*hamming(Nf3*2),1,a); . af4 = filter(y(N/2-Nf4:N/2+Nf4-1).*hamming(Nf4*2),1,a); .

Полученные результаты показаны ниже:

Другое дело! Пульсации ушли, однако АЧХ фильтра стала более “заваленной”. Выбор типа окна зависит от конкретной решаемой задачи. Самые распространённые: параметрическое окно Кайзера, Чебышёва, окно Блэкмана, Хэмминга и др.

БИХ-фильтры

Основное отличие в структуре БИХ-фильтра от КИХ-фильтра — наличие обратной связи. Что такое обратная связь? Это когда на вход устройства подаётся сигнал, пропорциональный сигналу на его выходе. Таким образом, значение выходного сигнала БИХ-фильтра зависит не только от текущего и предыдущего значения входного сигнала, но и от предыдущего значения выходного сигнала. Это одновременно и плюс, и минус: наличие обратной связи позволяет значительно сократить количество отсчётов (а значит, и порядок фильтра, а как следствие – количество умножений), однако может привести к неустойчивости его работы, или вообще превратить фильтр в генератор. Из-за того, что при отсутствии входного сигнала на выходе БИХ-фильтра может генерироваться бесконечное количество отсчётов, его и прозвали фильтром с бесконечной импульсной характеристикой.

Давайте на примере сравним, сколько же потребуется коэффициентов КИХ- и БИХ-фильтра для реализации одинаковой АЧХ. Спроектируем с помощью filterDesigner два ФНЧ со следующими параметрами:

  • Гц — частота дискретизации;
  • Гц — начало спада АЧХ;
  • Гц — конец спада АЧХ;
  • дБ — пульсации в полосе пропускания;
  • дБ — подавление в полосе задерживания.

В результате получили два фильтра, АЧХ и ФЧХ которых представлены ниже:

Из рисунка видно, что АЧХ фильтров действительно схожи, однако, для реализации КИХ-фильтра нам потребовалось 222 коэффициента, а для реализации БИХ-фильтра — всего 41. Получается, что в случае с БИХ-фильтром, операций умножения требуется в 5 раза меньше.

Следует также обратить внимание на график фазы. У КИХ-фильтров ФЧХ гарантированно линейная, у БИХ-фильтров она гарантированно нелинейная, о чём нужно помнить.

Рассмотрим структуру БИХ-фильтра:

Структурная схема БИХ-фильтра

Он состоит из двух частей: прямой и обратной связи. Прямая связь повторяет структурную схему КИХ фильтра, обратная связь напоминает зеркальную копию прямой связи.

Таким образом, разностное уравнение БИХ-фильтра имеет вид:

\begin{equation*} y[n] = \sum\limits_{i=0}^{N} b(i) \cdot x(n-i) - \sum\limits_{k=1}^{M} a(k) \cdot y(n-k), \end{equation*}

(5)

  • и — входной и выходной сигналы соответственно;
  • — коэффициенты прямой связи;
  • — коэффициенты обратной связи;
  • и — порядок прямой и обратной связи соответственно;

При проектировании БИХ-фильтров используют z-преобразование, корни которого идут от преобразования Лапласа. Второе преобразование вам точно знакомо, его должны были изучать на курсе математического анализа. Давайте вспомним, что это такое, а затем перейдём к изучению z-преобразования. Но это на следующей лекции.

Скачать конспект в pdf: Digital Filters Lecture – V.V. Leonidov.pdf

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *