Документация Engee

butter

Конструкция фильтра Баттерворта.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • b,a = butter(n,Wn) — проектирует цифровой фильтр нижних частот Баттерворта n-го порядка с нормализованной частотой среза Wn. Функция butter коэффициенты числителя и знаменателя передаточной функции фильтра.

  • b,a = butter(n,Wn,ftype) — проектирует цифровой фильтр Баттерворта: фильтр нижних частот, фильтр верхних частот, полосовой или режекторный, в зависимости от значения аргумента ftype и количества элементов Wn. Получающиеся конструкции полосового и режекторного фильтров имеют порядок 2n.

    При проектировании БИХ-фильтров с передаточным числом вплоть до 4-го порядка можно столкнуться с численной нестабильностью. Дополнительную информацию о численных проблемах, влияющих на формирование передаточной функции, см. в разделе Передаточные функции и CTF.
  • z,p,k = butter(___,out=3) — проектирует цифровой фильтр Баттерворта и возвращает его нули, полюса и коэффициент усиления. Данный синтаксис может включать любые входные аргументы из предыдущих вариантов. Аргумент out показывает, сколько выходных аргументов вернет функция. Если аргумент out не указан, то функция произведет расчет только для двух выходных аргументов.

  • A,B,C,D = butter(___,out=4) — проектирует цифровой фильтр Баттерворта и возвращает матрицы, которые определяют его представление в пространстве состояний.

  • ___ = butter(___,"s") — проектирует аналоговый фильтр Баттерворта, используя любой из входных или выходных аргументов в предыдущих синтаксисах.

  • B,A = butter(n,Wn,"ctf") — проектирует цифровой фильтр нижних частот Баттерворта с использованием каскадных передаточных функций второго порядка (Cascaded Transfer Functions, CTF). Функция возвращает матрицы, содержащие полиномиальные коэффициенты знаменателя и числителя передаточной функции фильтра, представленной в виде каскада секций фильтра. Такой подход позволяет создавать БИХ-фильтры с улучшенной численной устойчивостью по сравнению с односекционными передаточными функциями.

  • ___ = butter(n,Wn,ftype,"ctf") — проектирует цифровой фильтр Баттерворта нижних частот, верхних частот, полосовой или режекторный фильтр и возвращает представление фильтра в формате CTF. Полученные секции конструкции имеют порядок 2 (фильтры нижних и верхних частот) или 4 (полосовые и режекторные фильтры).

  • ___,gS = butter(___) — возвращает общий коэффициент усиления системы. Для возврата gS необходимо указать "ctf".

Аргументы

Входные аргументы

# n — порядок фильтра
целочисленный скаляр

Details

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

Типы данных

Float64

# Wn — частота среза
скаляр | двухэлементный вектор

Details

Частота среза, заданная как скаляр или двухэлементный вектор. Частота среза — это частота, на которой амплитудно-частотная характеристика фильтра равна .

  • Если Wn — скаляр, то функция butter проектирует фильтр нижних или верхних частот с частотой среза Wn.

    Если Wn — двухэлементный вектор [w1,w2], где w1 < w2, то функция butter проектирует полосовой или режекторный фильтр с нижней частотой среза w1 и и верхней частотой среза w2.

  • Для цифровых фильтров частоты среза должны лежать в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста — половине частоты дискретизации или рад/отсчет.

    Для аналоговых фильтров частоты среза должны быть выражены в радианах в секунду и могут принимать любое положительное значение.

Типы данных

Float64

# ftype — тип фильтра
"low" | "bandpass" | "high" | "stop"

Details

Тип фильтра, заданный одним из следующих способов:

  • "low" определяет фильтр нижних частот с частотой среза Wn. Значение "low" является значением по умолчанию для скалярного Wn.

  • "high" определяет фильтр верхних частот с частотой среза Wn.

  • "bandpass" определяет полосовой фильтр порядка 2n, если Wn — двухэлементный вектор. Значение "bandpass" является значением по умолчанию, если Wn состоит из двух элементов.

  • "stop" определяет режекторный фильтр порядка 2n, если Wn — двухэлементный вектор.

Входные аргументы «имя-значение»

# out — количество выходных аргументов
положительный целочисленный скаляр

Details

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

Выходные аргументы

# b,a — коэффициенты передаточной функции
векторы-строки

Details

Коэффициенты передаточной функции фильтра, возвращаемые в виде векторов-строк. При заданном порядке фильтра n функция возвращает b и a с r отсчетами, где r = n + 1 для фильтров нижних и верхних частот и r = 2 * n + 1 для полосовых и режекторных фильтров.

Передаточная функция выражается через и следующим образом:

  • для цифровых фильтров;

  • для аналоговых фильтров.

Типы данных

Float64

# z,p,k — нули, полюса и коэффициент усиления
векторы-столбцы, скаляр

Details

Нули, полюса и коэффициент усиления фильтра, возвращаемые в виде двух векторов-столбцов и скаляра. При заданном порядке фильтра n функция возвращает z и p с r отсчетами, где r = n для фильтров нижних и верхних частот и r = 2 * n для полосовых и режекторных фильтров.

Передаточная функция выражается через , и следующим образом:

  • для цифровых фильтров;

  • для аналоговых фильтров.

Типы данных

Float64

# A,B,C,D — представление в пространстве состояний
матрицы

Details

Представление фильтра в пространстве состояний, возвращаемое в виде матриц. Если r = n для фильтров нижних и верхних частот и r = 2n для полосовых и режекторных фильтров, то A равно , B равно , C равно , а D равно .

Матрицы в пространстве состояний связывают вектор состояния , входной сигнал и выходной сигнал посредством одной из следующих систем уравнений.

  • Для цифровых фильтров:

  • Для аналоговых фильтров:

Типы данных

Float64

# B,A — коэффициенты каскадной передаточной функции
вектор-строка | матрица

Details

Коэффициенты каскадной передаточной функции (Cascaded Transfer Functions, CTF), возвращаемые в виде вектора-строки или матрицы. B и A — коэффициенты числителя и знаменателя каскадной передаточной функции соответственно.

Размеры B и A: на и на соответственно. Функция возвращает первый столбец матрицы A как 1, таким образом, A(1)=1 когда A — вектор-строка.

  • L — количество секций фильтра.

  • m — порядок числителей фильтра.

  • n — порядок знаменателей фильтра.

Функция butter возвращает коэффициенты каскадной передаточной функции со следующими параметрами порядка:

  • для фильтров нижних и верхних частот;

  • для полосовых и режекторных фильтров.

Чтобы настроить вычисление коэффициента каскадной передаточной функции, например, установить другой порядок в коэффициентах каскадной передаточной функции или настроить масштабирование усиления, укажите возврат z,p,k, а затем используйте функцию zp2ctf для получения B,A.

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

# gS — общий коэффициент усиления системы
вещественный скаляр

Details

Общий коэффициент усиления системы, возвращаемый в виде вещественного скаляра.

  • Если указано, что нужно вернуть gS, функция butter нормализует коэффициенты числителя так, чтобы первый столбец B был равен 1, и возвращает общий коэффициент усиления системы в gS.

  • Если не указано, что нужно вернуть gS, функция butter равномерно распределяет коэффициент усиления системы по всем секциям системы с помощью функции scaleFilterSections.

Дополнительно

Каскадные передаточные функции

Details

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

butter ru

Возврат цифровых фильтров в формате CTF

Details

Укажите аргументы B и A, чтобы вернуть коэффициенты фильтра. Вы также можете указать gS, чтобы вернуть общий коэффициент усиления системы. Указав эти выходные аргументы, вы можете проектировать цифровые фильтры в формате CTF для анализа, визуализации и фильтрации сигналов.

Коэффициенты фильтра

Если вы указываете возврат коэффициентов числителя и знаменателя в формате CTF, -строчные матрицы и возвращаются в виде

таким образом, что полная передаточная функция фильтра равна



где порядок числителя фильтра, а порядок знаменателя.

Следующие функции могут быть использованы для визуализации и анализа фильтров в формате CTF. Характеристики во временной области — impzlength и impz. Характеристики в частотной области — freqz, grpdelay, phasedelay и phasez. Исследование фильтра — islinphase, ismaxphase и isstable.

Коэффициенты и усиление

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

так что передаточная функция имеет вид



Данная передаточная функция эквивалентна функции, определенной в разделе Коэффициенты фильтра, где и при и .

Передаточные функции и CTF

Details

Численная нестабильность синтаксиса передаточных функций

В общем случае для проектирования цифровых БИХ-фильтров следует использовать каскадные передаточные функции (синтаксисы "ctf"). При проектировании фильтра с использованием передаточных функций (любой из синтаксисов b,a), могут возникнуть численные неустойчивости. Эти неустойчивости вызваны ошибками округления и могут даже при порядках n вплоть до 4.

Алгоритмы

Фильтры Баттерворта имеют максимально плоскую амплитудно-частотную характеристику (АЧХ) в полосе пропускания и монотонную в целом. Эта гладкость достигается за счет уменьшения крутизны спада. Эллиптические фильтры и фильтры Чебышева обычно обеспечивают более крутой спад для заданного порядка фильтра.

Функция butter использует пятишаговый алгоритм:

  1. Она находит полюса, нули и коэффициент усиления прототипа аналогового фильтра нижних частот.

  2. Она преобразует полюса, нули и коэффициент усиления в форму пространства состояний.

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

  4. Для проектирования цифровых фильтров используется билинейная функция для преобразования аналогового фильтра в цифровой посредством билинейного преобразования с предварительным искажением частоты. Точная настройка частоты позволяет аналоговым и цифровым фильтрам иметь одинаковую амплитуду АЧХ на частотах Wn или w1 и w2.

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

Литература

  1. Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.