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

ctf2zp

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

Библиотека

EngeeDSP

Синтаксис

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

  • z,p = ctf2zp(B,A,g) — задает значения масштаба g для всех секций фильтра.

  • ___,k = ctf2zp(___) — возвращает скалярный коэффициент усиления k системы. Используйте этот синтаксис с любым из входных или выходных аргументов, указанных в предыдущих вариантах вызова функции.

Аргументы

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

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

Details

Коэффициенты каскадной передаточной функции, заданные как скаляры, векторы или матрицы. В матрицах B и A перечислены коэффициенты числителя и знаменателя каскадной передаточной функции соответственно.

Матрица B должна иметь размер на , а матрица A на , где

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

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

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

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

Если какой-либо элемент матрицы A[:,1] не равен 1, то функция ctf2zp нормализует коэффициенты фильтра по A[:,1]. В этом случае A[:,1] должно быть ненулевым.
Типы данных

Float64, Float32

Поддержка комплексных чисел

Да

# g — масштабные значения
1 (по умолчанию) | скаляр | вектор

Details

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

Функция ctf2zp применяет усиление к секциям фильтра с помощью функции scaleFilterSections в зависимости от способа задания аргумента g:

  • скаляр — функция равномерно распределяет усиление по всем секциям фильтра;

  • вектор — функция применяет первые значений усиления к соответствующим секциям фильтра и равномерно распределяет последнее значение усиления по всем секциям фильтра.

Типы данных

Float64, Float32

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

# z,p — нули и полюса системы
векторы

Details

Нули и полюса системы, возвращаемые в виде векторов-столбцов.

Векторы z и p содержат нулей и полюсов передаточной функции соответственно.

# k — коэффициент усиления системы
скаляр

Details

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

Скаляр представляет собой коэффициент усиления передаточной функции .

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

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

Details

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

butter ru

Задание цифровых фильтров в формате CTF

Details

В формате CTF можно проектировать цифровые фильтры для анализа, визуализации и фильтрации сигналов. Фильтр задается путем перечисления его коэффициентов B и A. Также можно указать коэффициент масштабирования фильтра по секциям, задав скалярную или векторную величину g.

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

При задании коэффициентов в виде -строчных матриц

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

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

  • Если и заданы как векторы, предполагается, что базовая система представляет собой односекционный БИХ-фильтр ( ), где представляет собой числитель передаточной функции, а — ее знаменатель.

  • Если — скаляр, предполагается, что фильтр представляет собой каскад БИХ-фильтров с полюсами, причем общий коэффициент усиления системы каждого каскада равен .

  • Если — скаляр, предполагается, что фильтр представляет собой каскад КИХ-фильтров, причем общий коэффициент усиления системы каждого каскада равен .

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

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

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

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

Коэффициент усиления может быть скалярным общим коэффициентом усиления или вектором коэффициентов усиления секций.

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

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

Если вы зададите матрицы коэффициентов фильтра и вектор коэффициентов усиления в виде

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

Литература

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