Преобразование параметров фильтра с нулями, полюсами и коэффициентом усиления в каскадную форму передаточной функции.
Библиотека
EngeeDSP
Синтаксис
Вызов функции
B,A = zp2ctf(z,p) — вычисляет Каскадные передаточные функции второго порядка (Cascaded Transfer Functions, CTF) фильтра, описываемой ее нулями z и полюсами p.
B,A = zp2ctf(z,p,k) — задает скалярный коэффициент усиления системы.
B,A = zp2ctf(___,Name,Value) — задает дополнительные параметры с помощью аргументов типа «имя-значение».
___,gS = zp2ctf(___) — также возвращает общий коэффициент усиления системы.
Коэффициент усиления системы, заданный как вещественный скаляр.
Скаляр представляет собой коэффициент усиления передаточной функции .
Если вы запрашиваете выходной аргумент gS, то функция zp2ctf присваивает значение k аргументу gS.
Типы данных
Float64
Входные аргументы «имя-значение»
Укажите необязательные пары аргументов в виде Name,Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения.
Используйте запятые для разделения имени и значения, а Name заключите в кавычки.
#SectionOrder —
порядок секций передаточных функций
2 (по умолчанию) | 4
Details
Порядок секций передаточных функций, заданный как 2 или 4. В зависимости от значения, указанного для аргумента SectionOrder, функция zp2ctf возвращает либо каскадную передаточную функцию второго порядка, либо каскадную передаточную функцию четвертого порядка.
2 — функция zp2ctf возвращает матрицы B и A каскадной формы передаточной функции в виде секций второго порядка с тремя столбцами каждая.
4 — функция zp2ctf возвращает матрицы B и A каскадной формы передаточной функции в виде секций четвертого порядка с пятью столбцами каждая.
#Direction —
порядок расположения секций передаточной функции
"up" (по умолчанию) | "down"
Details
Порядок расположения секций передаточной функции, заданный как "up" или "down". Функция zp2ctf сортирует строки матрицы A в зависимости от расстояния между полюсами и началом координат.
"up" — первая строка матрицы A содержит полюса, ближайшие к началу координат.
"down" — первая строка матрицы A содержит полюса, ближайшие к единичной окружности.
Функция zp2ctf сортирует строки матрицы B таким образом, чтобы нули в каждой секции объединялись в пары с ближайшими полюсами, соответствующими строкам матрицы A.
Масштабирование усиления, заданное как "none", "inf" или "l2". Функция zp2ctf масштабирует коэффициент усиления и коэффициенты числителя всех секций с помощью функции filternorm в зависимости от значения, указанного для параметра Scale:
"none" — без масштабирования;
"inf" — масштабирование по бесконечной норме;
"l2" — масштабирование по норме L2.
Масштабирование по бесконечной норме и норме L2 подходит только для реализаций в прямой форме II и поддерживается только для стабильных систем.
Использование масштабирования по бесконечной норме в сочетании с порядком направления "up" минимизирует вероятность переполнения при реализации фильтров. С другой стороны, использование масштабирования по норме L2 в сочетании с порядком направления "down" минимизирует пиковый шум округления.
Типы данных
String
Выходные аргументы
#B,A —
коэффициенты каскадной передаточной функции
матрица L × 3 (по умолчанию) | матрица L × 5
Details
Коэффициенты каскадной передаточной функции, возвращаемые в виде матриц размером на или на , где — количество секций. Количество столбцов зависит от значения, указанного для аргумента SectionOrder.
В матрицах B и A перечислены коэффициенты числителя и знаменателя каскадной передаточной функции соответственно. Дополнительную информацию см. в разделе Представление цифровых фильтров в формате CTF.
Общий коэффициент усиления системы, возвращаемый в виде вещественного скаляра.
Если указано, что нужно вернуть gS, функция zp2ctf нормализует коэффициенты числителя относительно коэффициента усиления системы k и возвращает общий коэффициент усиления системы в виде gS.
Если не указано, что нужно вернуть gS, функция zp2ctf равномерно распределяет коэффициент усиления системы k по всем секциям системы с помощью функции scaleFilterSections.
Дополнительно
Каскадные передаточные функции
Details
Разбиение цифрового БИХ-фильтра на каскадные секции повышает его численную устойчивость и снижает восприимчивость к ошибкам квантования коэффициентов. Каскадная форма передаточной функции , выраженная через передаточных функций , имеет вид
Представление цифровых фильтров в формате CTF
Details
Укажите аргументы B и A, чтобы получить коэффициенты фильтра. Вы также можете указать gS, чтобы получить общий коэффициент усиления фильтра. Указав эти выходные аргументы, вы можете проектировать цифровые фильтры в формате CTF для анализа, визуализации и фильтрации сигналов.
Коэффициенты фильтра
Если вы указываете представление коэффициентов числителя и знаменателя в формате CTF, -строчные матрицы и возвращаются в виде
таким образом, что полная передаточная функция фильтра равна
где — порядок числителя фильтра, а — порядок знаменателя.
Следующие функции могут быть использованы для визуализации и анализа фильтров в формате CTF:
Характеристики во временной области — impzlength и impz.
Характеристики в частотной области — freqz, grpdelay, phasedelay и phasez.
Исследование фильтра — islinphase, ismaxphase и isstable.
Коэффициенты и усиление
Можно указать, что необходимо возвращать коэффициенты и общий коэффициент усиления системы, используя триплет выходных аргументов B,A,gS. В этом случае коэффициенты числителя нормализуются, возвращая матрицы коэффициентов фильтра и коэффициент усиления в виде
так что передаточная функция имеет вид
Данная передаточная функция эквивалентна функции, определенной в разделе Коэффициенты фильтра, где и при и .
Алгоритмы
Функция zp2ctf вычисляет коэффициенты числителя и знаменателя каскадных секций передаточной функции на основе нулей, полюсов и коэффициента усиления фильтра. Для фильтра -го порядка существует возможных комбинаций [1]. Переменная — ближайшее целое число, большее или равное или для секций второго или четвертого порядка соответственно.
Настройте критерии сортировки для объединения нулей и полюсов в пары в каскадных секциях, задав значение для аргумента Direction, чтобы начать с полюсов и нулей, ближайших к началу координат -плоскости ("up"), или ближайших к единичной окружности ("down"). Выполните масштабирование усиления по каскадным секциям, с помощью аргумента Scale. Настройте порядок каскадных секций, установив для аргумента SectionOrder значение 2 или 4, чтобы создать каскадные секции второго или четвертого порядка соответственно.
Выходные аргументы B и A содержат коэффициенты каскадной передаточной функции второго или четвертого порядка фильтра, распределенные по строкам.
Каждая строка аргументов B и A содержит список коэффициентов в каждой секции.
Функция возвращает первый столбец матрицы A равным 1, следовательно, A(1) = 1, когда A является вектором-строкой.
При указании необходимости возвращать gS функция zp2ctf нормализует коэффициенты числителя так, чтобы первый столбец матрицы B был равен 1, и возвращает общий коэффициент усиления системы в виде gS. Таким образом, B(1) = 1, когда B является вектором-строкой.
Если не указывать gS как выходной аргумент, функция zp2ctf сначала нормализует коэффициенты числителя так, чтобы первый столбец матрицы B был равен 1, а затем равномерно умножает нормализованные коэффициенты числителя на sgn(gS)*gS^(1/L), так что первый столбец матрицы B будет равен sgn(gS)*gS^(1/L). Таким образом, B(1) = gS, когда B является вектором-строкой.
При указании секций второго порядка или игнорировании аргумента SectionOrder, функция zp2ctf возвращает матрицы B и A размером на , где последние два столбца соответствуют членам и для каждой каскадной секции фильтра.
При указании секций четвертого порядка, функция zp2ctf возвращает матрицы B и A размером на , где последние два столбца соответствуют членам и для каждой каскадной секции фильтра.
Литература
Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.