Преобразование каскадных передаточных функций в форму с нулями, полюсами и коэффициентом усиления.
Библиотека
EngeeDSP
Синтаксис
Вызов функции
z,p = ctf2zp(B,A) — вычисляет нули z и полюса p системы, представленной в виде каскадных передаточных функций (Cascaded Transfer Functions, CTF) с коэффициентами числителя B и коэффициентами знаменателя A.
z,p = ctf2zp(B,A,g) — задает значения масштаба g для всех секций фильтра.
___,k = ctf2zp(___) — возвращает скалярный коэффициент усиления k системы. Используйте этот синтаксис с любым из входных или выходных аргументов, указанных в предыдущих вариантах вызова функции.
Коэффициенты каскадной передаточной функции, заданные как скаляры, векторы или матрицы. В матрицах B и A перечислены коэффициенты числителя и знаменателя каскадной передаточной функции соответственно.
Матрица B должна иметь размер на , а матрица A — на , где
Если какой-либо элемент матрицы A[:,1] не равен 1, то функция ctf2zp нормализует коэффициенты фильтра по A[:,1]. В этом случае A[:,1] должно быть ненулевым.
Типы данных
Float64, Float32
Поддержка комплексных чисел
Да
#g —
масштабные значения
1 (по умолчанию) | скаляр | вектор
Details
Масштабные значения задаются в виде вещественного скаляра или вектора с вещественными значениями, содержащего элемент, где — количество секций каскадной передаточной функции. Масштабные значения представляют собой распределение усиления фильтра по секциям представления каскадного фильтра.
Функция ctf2zp применяет усиление к секциям фильтра с помощью функции scaleFilterSections в зависимости от способа задания аргумента g:
скаляр — функция равномерно распределяет усиление по всем секциям фильтра;
вектор — функция применяет первые значений усиления к соответствующим секциям фильтра и равномерно распределяет последнее значение усиления по всем секциям фильтра.
Коэффициент усиления системы, возвращаемый в виде скаляра.
Скаляр представляет собой коэффициент усиления передаточной функции .
Дополнительно
Каскадные передаточные функции
Details
Разбиение цифрового БИХ-фильтра на каскадные секции повышает его численную устойчивость и снижает восприимчивость к ошибкам квантования коэффициентов. Каскадная форма передаточной функции в терминах передаточных функций имеет вид
Задание цифровых фильтров в формате CTF
Details
В формате CTF можно проектировать цифровые фильтры для анализа, визуализации и фильтрации сигналов. Фильтр задается путем перечисления его коэффициентов B и A. Также можно указать коэффициент масштабирования фильтра по секциям, задав скалярную или векторную величину g.
Коэффициенты фильтра
При задании коэффициентов в виде -строчных матриц
предполагается, что фильтр задан как последовательность из каскадных передаточных функций, так что полная передаточная функция фильтра имеет вид
где — порядок числителя фильтра, а — порядок знаменателя.
Если и заданы как векторы, предполагается, что базовая система представляет собой односекционный БИХ-фильтр (), где представляет собой числитель передаточной функции, а — ее знаменатель.
Если — скаляр, предполагается, что фильтр представляет собой каскад БИХ-фильтров с полюсами, причем общий коэффициент усиления системы каждого каскада равен .
Если — скаляр, предполагается, что фильтр представляет собой каскад КИХ-фильтров, причем общий коэффициент усиления системы каждого каскада равен .
Для преобразования матриц секций второго порядка в каскадные передаточные функции используйте функцию sos2ctf.
Для преобразования представления фильтра с нулями, полюсами и коэффициентом усиления в каскадные передаточные функции используйте функцию zp2ctf.
Коэффициенты и усиление
Если есть общий масштабный коэффициент усиления или несколько масштабных коэффициентов усиления, вынесенных за пределы значений коэффициентов фильтра, вы можете указать коэффициенты и усиление в виде массива вида [B, A, g]. Масштабирование секций фильтра особенно важно при работе с арифметикой с фиксированной запятой, чтобы гарантировать, что выходные сигналы каждой секции фильтра имеют схожие уровни амплитуды, что помогает избежать неточностей в частотной характеристике фильтра из-за ограниченной точности вычислений.
Коэффициент усиления может быть скалярным общим коэффициентом усиления или вектором коэффициентов усиления секций.
Если коэффициент усиления скалярный, его значение применяется равномерно ко всем секциям каскадного фильтра.
Если коэффициент усиления является вектором, он должен содержать на один элемент больше, чем количество секций фильтра в каскаде. Каждое из первых масштабных значений применяется к соответствующей секции фильтра, а последнее значение применяется равномерно ко всем секциям каскадного фильтра.
Если вы зададите матрицы коэффициентов фильтра и вектор коэффициентов усиления в виде
то предполагается, что передаточная функция системы фильтра имеет вид
Литература
Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.