БИХ-проект фильтра

БИХ по сравнению с КИХ-фильтрами

Первичное преимущество БИХ-фильтров по КИХ-фильтрам состоит в том, что они обычно соответствуют данному набору спецификаций с намного более низким порядком фильтра, чем соответствующий КИХ-фильтр. Несмотря на то, что БИХ-фильтры имеют нелинейную фазу, обработка данных в MATLAB обычно выполняется “оффлайн”, то есть, целая последовательность данных доступна до фильтрации. Это допускает непричинный, подход фильтрации нулевой фазы (через функцию filtfilt), который устраняет нелинейное искажение фазы БИХ-фильтра.

Классические БИХ-фильтры

Классические БИХ-фильтры, Баттерворт, Чебышевские Типы I и II, эллиптические, и функция Бесселя, все аппроксимируют идеальный фильтр “кирпичной стены” по-разному.

Этот тулбокс обеспечивает, функции, чтобы создать все эти типы классического БИХ просачивается и аналоговые и цифровые области (кроме функции Бесселя, для которой только аналоговый случай поддерживается), и в lowpass, highpass, полосе пропускания и bandstop настройках. Для большинства типов фильтра можно также найти, что самый низкий фильтр приказывает, чтобы соответствовал данной спецификации фильтра с точки зрения полосы пропускания и затухания полосы задерживания и ширины (ширин) перехода.

Другие БИХ-фильтры

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

Можно также использовать параметрическое моделирование или функции системы идентификации, чтобы разработать БИХ-фильтры. Эти функции обсуждены в Параметрическом моделировании.

Обобщенная функция проекта Баттерворта maxflat обсуждена в разделе Generalized Butterworth Filter Design.

БИХ-сводные данные метода фильтра

Следующая таблица обобщает различные методы фильтра в тулбоксе и приводит функции, доступные, чтобы реализовать эти методы.

Тулбокс фильтрует методы и доступные функции

Отфильтруйте методОписаниеФункции filter

Аналоговое прототипирование

Используя полюса и нули классического lowpass прототип просачивается непрерывная область (Лапласа), получает цифровое, проникают в преобразование частоты и фильтруют дискретизацию.

Полные функции проекта:

besself, butter, cheby1, cheby2, ellip

Функции оценки порядка:

buttord, cheb1ord, cheb2ord, ellipord

Аналог Lowpass моделирует функции:

besselap, buttap, cheb1ap, cheb2ap, ellipap

Функции преобразования частоты:

lp2bp, lp2bs, lp2hp, lp2lp

Функции дискретизации фильтра:

bilinear, impinvar

Прямой проект

Разработайте цифровой фильтр непосредственно в дискретном временном интервале путем приближения кусочного линейного ответа значения.

yulewalk

Обобщенный проект Баттерворта

Разработайте lowpass Фильтры Баттерворта с большим количеством нулей, чем полюса.

maxflat

Параметрическое моделирование

Найдите цифровой фильтр, который аппроксимирует предписанное время или ответ частотного диапазона. (См. документацию System Identification Toolbox™ для обширного набора инструментов параметрического моделирования.)

Функции моделирования временного интервала:

lpc, prony, stmcb

Функции моделирования частотного диапазона:

invfreqs, invfreqz

Классический БИХ-проект фильтра Используя аналоговое прототипирование

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

Завершите классический БИХ-проект фильтра

Можно легко создать фильтр любого порядка с lowpass, highpass, полосой пропускания или bandstop настройкой с помощью функций проекта фильтра.

Отфильтруйте функции проекта

Отфильтруйте тип

Функция проекта

Функция Бесселя (только аналог)

  [b,a] = besself(n,Wn,options)

  [z,p,k] = besself(n,Wn,options)

  [A,B,C,D] = besself(n,Wn,options)

Баттерворт

  [b,a] = butter(n,Wn,options)

  [z,p,k] = butter(n,Wn,options)

  [A,B,C,D] = butter(n,Wn,options)

Чебышевский тип I

  [b,a] = cheby1(n,Rp,Wn,options)

  [z,p,k] = cheby1(n,Rp,Wn,options)

  [A,B,C,D] = cheby1(n,Rp,Wn,options)

Чебышевский тип II

  [b,a] = cheby2(n,Rs,Wn,options)

  [z,p,k] = cheby2(n,Rs,Wn,options)

  [A,B,C,D] = cheby2(n,Rs,Wn,options)

Эллиптический

  [b,a] = ellip(n,Rp,Rs,Wn,options)

  [z,p,k] = ellip(n,Rp,Rs,Wn,options)

  [A,B,C,D] = ellip(n,Rp,Rs,Wn,options)

По умолчанию каждая из этих функций возвращает фильтр lowpass; необходимо задать только частоту среза, которую вы хотите, Wn, в нормированных единицах, таким образом, что частота Найквиста составляет 1 Гц). Для фильтра highpass добавьте 'high' к списку параметров функции. Для полосового или заграждающего фильтра задайте Wn как двухэлементный вектор, содержащий частоты ребра полосы пропускания. Добавьте 'stop' для bandstop настройки.

Вот является некоторый пример цифровыми фильтрами:

[b,a] = butter(5,0.4);                    % Lowpass Butterworth
[b,a] = cheby1(4,1,[0.4 0.7]);            % Bandpass Chebyshev Type I
[b,a] = cheby2(6,60,0.8,'high');          % Highpass Chebyshev Type II
[b,a] = ellip(3,1,60,[0.4 0.7],'stop');   % Bandstop elliptic

Чтобы разработать аналоговый фильтр, возможно, для симуляции, используют запаздывающий 's' и задают частоты среза в rad/s:

[b,a] = butter(5,0.4,'s');      % Analog Butterworth filter

Все функции проекта фильтра возвращают фильтр в передаточной функции, нулях и полюсах или представлении модели линейной системы пространства состояний, в зависимости от того, сколько выходных аргументов присутствует. В целом необходимо избегать использования формы передаточной функции, потому что могут произойти числовые проблемы, вызванные ошибками округления. Вместо этого используйте форму нулей и полюсов, которую можно преобразовать в форму раздела второго порядка (SOS) с помощью zp2sos и затем использовать форму SOS, чтобы анализировать или реализовать фильтр.

Примечание

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

Разработка БИХ-фильтров к спецификациям частотного диапазона

Этот тулбокс обеспечивает функции выбора порядка, которые вычисляют минимальный порядок фильтра, который соответствует данному набору требований.

Отфильтруйте тип

Закажите функцию оценки

Баттерворт

  [n,Wn] = buttord(Wp,Ws,Rp,Rs)

Чебышевский тип I

  [n,Wn] = cheb1ord(Wp,Ws,Rp,Rs)

Чебышевский тип II

  [n,Wn] = cheb2ord(Wp,Ws,Rp,Rs)

Эллиптический

  [n,Wn] = ellipord(Wp,Ws,Rp,Rs)

Они полезны в сочетании с функциями проекта фильтра. Предположим, что вы хотите полосовой фильтр с полосой пропускания от 1 000 до 2 000 Гц, полосы задерживания, запускающиеся на расстоянии в 500 Гц с обеих сторон, частота дискретизации на 10 кГц, самое большее 1 дБ пульсации полосы пропускания и по крайней мере 60 дБ затухания полосы задерживания. Можно соответствовать этим спецификациям при помощи функции butter можно следующим образом.

[n,Wn] = buttord([1000 2000]/5000,[500 2500]/5000,1,60)
[b,a] = butter(n,Wn);
n =
    12
Wn =
    0.1951    0.4080

Эллиптическим фильтром, который удовлетворяет те же требования, дают

[n,Wn] = ellipord([1000 2000]/5000,[500 2500]/5000,1,60)
[b,a] = ellip(n,1,60,Wn);
n =
    5
Wn =
    0.2000    0.4000

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

Сравнение классических БИХ-типов фильтра

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

Фильтр Баттерворта

Фильтр Баттерворта предоставляет лучшее приближение Ряда Тейлора идеалу lowpass ответ фильтра на аналоговых частотах Ω = 0 и Ω = ∞; для любого порядка N ответ значения в квадрате имеет 2N – 1 нулевая производная в этих местоположениях (максимально плоский в Ω = 0 и Ω = ∞). Ответ является монотонным в целом, уменьшаясь гладко с Ω = 0 к Ω = ∞. |H(jΩ)|=1/2 в Ω = 1.

Чебышевский тип я фильтрую

Чебышевский Тип, который я фильтрую, минимизирует абсолютную разность между идеальной и фактической частотной характеристикой по целой полосе пропускания путем слияния равной пульсации  дБ Rp в полосе пропускания. Ответ полосы задерживания является максимально плоским. Переход от полосы пропускания до полосы задерживания более быстр, чем для Фильтра Баттерворта. |H(jΩ)|=10Rp/20 в Ω = 1.

Чебышевский фильтр типа II

Чебышевский фильтр Типа II минимизирует абсолютную разность между идеальной и фактической частотной характеристикой по целой полосе задерживания путем слияния равной пульсации  дБ Rs в полосе задерживания. Ответ полосы пропускания является максимально плоским.

Полоса задерживания не приближается к нулю так же быстро как тип , который я фильтрую (и не приближается, нуль вообще для четного фильтра заказывают n). Отсутствие пульсации в полосе пропускания, однако, часто является важным преимуществом. |H(jΩ)|=10RS/20 в Ω = 1.

Эллиптический фильтр

Эллиптические фильтры являются equiripple и в полосе пропускания и в полосе задерживания. Они обычно удовлетворяют требования фильтра с самым низкоуровневым из любого поддерживаемого типа фильтра. Учитывая распоряжение фильтра n, пульсация полосы пропускания Rp в децибелах и пульсация полосы задерживания Rs в децибелах, эллиптические фильтры минимизируют ширину перехода. |H(jΩ)|=10Rp/20 в Ω = 1.

Фильтр Бесселя

Аналоговая функция Бесселя lowpass фильтры имеет максимально плоскую групповую задержку на нулевой частоте и сохраняет почти постоянную групповую задержку через целую полосу пропускания. Фильтрованные сигналы поэтому поддерживают свой waveshapes в частотном диапазоне полосы пропускания. Частота сопоставленные и цифровые фильтры Бесселя, однако, не имеет этого максимально плоского свойства; этот тулбокс поддерживает только аналоговый случай для полной функции проекта фильтра Бесселя.

Фильтры Бесселя обычно требуют более высокого порядка фильтра, чем другие фильтры для удовлетворительного затухания полосы задерживания. |H(jΩ)|<1/2 в Ω = 1 и уменьшения как порядок фильтра увеличения n.

Примечание

Фильтры lowpass, показанные выше, были созданы с аналоговыми прототипными функциями besselap, buttap, cheb1ap, cheb2ap и ellipap. Эти функции находят нули, полюса и усиление аналогового фильтра th-порядка n соответствующего типа с частотой среза 1 рад/с. Полные функции проекта фильтра (besself, butter, cheby1, cheby2 и ellip) вызывают функции прототипирования как первый шаг в процессе проектирования. Смотрите Специальные Темы в БИХ-Проекте Фильтра для деталей.

Чтобы создать подобные графики, используйте n = 5 и, по мере необходимости, Rp = 0.5 и Rs = 20. Например, чтобы создать эллиптический график фильтра:

[z,p,k] = ellipap(5,0.5,20);
w = logspace(-1,1,1000);
h = freqs(k*poly(z),poly(p),w);
semilogx(w,abs(h)), grid
xlabel('Frequency (rad/s)')
ylabel('Magnitude')

Прямой БИХ-проект фильтра

Этот тулбокс использует термин прямые методы описать методы для БИХ-проекта, которые находят фильтр на основе спецификаций в дискретной области. В отличие от аналогового метода прототипирования, прямые методы разработки не ограничиваются к стандарту lowpass, highpass, полосе пропускания или bandstop настройкам. Скорее эти функции разрабатывают фильтры с произвольным, возможно, многополосная, частотная характеристика. В этом разделе рассматриваются функцию yulewalk, которая предназначается специально для проекта фильтра; Параметрическое моделирование обсуждает другие методы, которые могут также быть рассмотрены прямыми, такие как метод Прони, Линейное предсказание, метод Steiglitz-McBride и обратный проект частоты.

Функция yulewalk разрабатывает рекурсивного БИХ цифровые фильтры путем подбора кривой заданной частотной характеристике. имя yulewalk отражает свой метод для нахождения коэффициентов знаменателя фильтра: это находит, что обратный БПФ идеала задал ответ в квадрате значением и решает измененные уравнения Уокера Рождества с помощью получившихся выборок автокорреляционной функции. Оператор

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

возвращает векторы - строки b и a, содержащий числитель n+1 и коэффициенты знаменателя БИХ-фильтра th-порядка n, характеристики значения частоты которого аппроксимируют данных в векторах f и m. f является вектором точек частоты в пределах от от 0 до 1, где 1 представляет частоту Найквиста. m является вектором, содержащим заданный ответ значения в точках в f. f и m могут описать любой кусочный линейный ответ значения формы, включая многополосный ответ. КИХ-дубликатом этой функции является fir2, который также разрабатывает фильтр на основе произвольного кусочного линейного ответа значения. См. КИХ-Проект Фильтра для деталей.

Обратите внимание на то, что yulewalk не принимает информацию о фазе, и никакие операторы не сделаны об оптимальности получившегося фильтра.

Разработайте многополосный фильтр с yulewalk и постройте заданную и фактическую частотную характеристику:

m = [0   0   1   1   0   0   1   1   0 0];
f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1];
[b,a] = yulewalk(10,f,m);
[h,w] = freqz(b,a,128)
plot(f,m,w/pi,abs(h))

Обобщенный проект фильтра Баттерворта

Функция тулбокса maxflat позволяет вам разработать обобщенные Фильтры Баттерворта, то есть, Фильтры Баттерворта с отличающимися количествами нулей и полюсов. Это желательно в некоторых реализациях, где полюса являются более дорогими в вычислительном отношении, чем нули. maxflat точно так же, как функция butter, за исключением того, что это можно задать два порядка (один для числителя и один для знаменателя) вместо всего один. Эти фильтры являются максимально плоскими. Это означает, что получившийся фильтр оптимален для любого числителя и порядков знаменателя с максимальным количеством производных в 0 и частота Найквиста ω = π оба набора к 0.

Например, когда два порядка являются тем же самым, maxflat совпадает с butter:

[b,a] = maxflat(3,3,0.25)
b =
    0.0317    0.0951    0.0951    0.0317
a =
    1.0000   -1.4590    0.9104   -0.1978
[b,a] = butter(3,0.25)
b =
    0.0317    0.0951    0.0951    0.0317
a =
    1.0000   -1.4590    0.9104   -0.1978

Однако maxflat более универсален, потому что он позволяет вам разрабатывать фильтр с большим количеством нулей, чем полюса:

[b,a] = maxflat(3,1,0.25)
b =
    0.0950    0.2849    0.2849    0.0950
a =
    1.0000   -0.2402

Третий вход к maxflat является частотой на уровне половинной мощности, частотой между 0 и 1 с ответом значения 1/2.

Можно также разработать линейные фильтры фазы, которые имеют максимально плоское свойство с помощью опции 'sym':

maxflat(4,'sym',0.3)
ans =
    0.0331    0.2500    0.4337    0.2500    0.0331

Для полных деталей алгоритма maxflat смотрите Selesnick и Burrus [2].