БИХ Создания фильтра

Фильтры БИХ и конечные импульсные характеристики

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

Классические БИХ

Классические БИХ, Butterworth, Chebyshev Types I и II, эллиптические, и Бессель, все по-разному аппроксимируют идеальный фильтр «кирпичная стенка».

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

Другие БИХ

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

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

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

Сводные данные метода БИХ

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

Методы фильтров тулбокса и доступные функции

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

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

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

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

besself, butter, cheby1, cheby2, ellip

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

buttord, cheb1ord, cheb2ord, ellipord

Функции Lowpass аналогового прототипа:

besselap, buttap, cheb1ap, cheb2ap, ellipap

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

lp2bp, lp2bs, lp2hp, lp2lp

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

bilinear, impinvar

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

Проектируйте цифровой фильтр непосредственно в дискретной временной области путем аппроксимации кусочно-линейной амплитудной характеристики.

yulewalk

Обобщённый проект Butterworth

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

maxflat

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

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

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

lpc, prony, stmcb

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

invfreqs, invfreqz

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

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

Полный классический БИХ Создания фильтра

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

Создания фильтра

Тип фильтра

Проект

Бессель (только аналоговый)

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

[z, p, k] = бессельф (n, Wn, options)

[A, B, C, D ] = бессельф (n, Wn, options)

Баттерворт

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

[z, p, k] = масло (n, Wn, options)

[A, B, C, D ] = масло (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] = эллип (n, Rp, Rs, Wn, options)

[A, B, C, D ] = эллип (n, Rp, Rs, Wn, options)

По умолчанию каждая из этих функций возвращает lowpass; вам нужно задать только частоту отключения, которую вы хотите, Wn, в нормированных модулях такой, что частота Найквиста составляет 1 Гц). Для высокоскоростного фильтра добавьте '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' и укажите частоты отключения в рад/с:

[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)

Они полезны в сочетании с функциями создания фильтра. Предположим, вам нужен полосно-пропускающий фильтр с полосой пропускания от 1000 до 2000 Гц, полосами остановки, начинающимися на 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 и Ω  = ∞; для любого порядка <reservedrangesplaceholder1>   согласовалась величина, ответ имеет 2 N - 1 нулевая производная в этих   местоположениях (  максимально плоский в Ω = 0 и Ω = ∞). Реакция монотонна в целом,     плавно уменьшается с В = 0 до В = ∞.|H(jΩ)|=1/2 при в, =  1.

Фильтр Чебышевский Тип 1

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

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

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

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

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

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

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

Аналоговые lowpass Бесселя имеют максимально плоскую групповую задержку на нулевой частоте и сохраняют почти постоянную групповую задержку по всей полосе пропускания. Поэтому отфильтрованные сигналы поддерживают свои волны в области значений частот полосы пропускания. Когда аналоговый lowpass Бесселя преобразуется в цифровой посредством отображения частоты, он больше не имеет этого максимально плоского свойства. Signal Processing Toolbox™ поддерживает только аналоговый случай для полной функции создания фильтра Бесселя.

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

Примечание

Lowpass, показанные выше, были созданы с функциями аналогового прототипа besselap, buttap, cheb1ap, cheb2ap, и ellipap. Эти функции находят нули, полюсы и усиление nаналоговый фильтр I порядка соответствующего типа с частотой отключения 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')

Функции прямого БИХ Создания фильтра

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

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

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

возвращает векторы-строки b и a содержащий n+1 числитель и коэффициенты знаменателя nБИХ I порядка, характеристики которого аппроксимируют характеристики, заданные в векторах 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 алгоритм, см. Селесник и Беррус [2].