tf2zp
Преобразование параметров фильтра передаточной функции в форму нулей, полюсов и коэффициента усиления.
| Библиотека |
|
Синтаксис
Вызов функции
-
z,p,k = tf2zp(b,a)— находит матрицу нулейz, вектор полюсовpи соответствующий вектор коэффициентов усиленияkиз параметров передаточной функцииbиa. Функция преобразует полиномиальное представление передаточной функциинепрерывной системы с одним входом и несколькими выходами (Single-Input/Multi-Output, SIMO) в разложенную на множители форму передаточной функции
Функцию tf2zpследует использовать при работе со степенями , например, в непрерывных передаточных функциях. Аналогичная функцияtf2zpkболее полезна при работе с передаточными функциями, выраженными в степенях .
Аргументы
Входные аргументы
#
b —
коэффициенты числителя передаточной функции
вектор | матрица
Details
Коэффициенты числителя передаточной функции, заданные как вектор или матрица. Если b — матрица, то каждая строка b соответствует выходному сигналу системы. Аргумент b содержит коэффициенты в порядке убывания степеней . Количество столбцов b должно быть меньше или равно длине аргумента a.
| Типы данных |
|
#
a —
коэффициенты знаменателя передаточной функции
вектор
Details
Коэффициенты знаменателя передаточной функции, заданные как вектор. Аргумент a содержит коэффициенты в порядке убывания степеней .
| Типы данных |
|
Выходные аргументы
#
z —
нули
матрица
Details
Нули системы, возвращаемые в виде матрицы. Аргумент z содержит нули числителя в своих столбцах. Аргумент z имеет столько столбцов, сколько выходов.
#
p —
полюса
вектор
Details
Полюса системы, возвращаемые в виде вектора-столбца. Аргумент p содержит координаты полюсов коэффициентов знаменателя передаточной функции.
#
k —
коэффициенты усиления
вектор
Details
Коэффициенты усиления системы, возвращаемые в виде вектора-столбца. Аргумент k содержит коэффициенты усиления для каждой передаточной функции числителя.
Примеры
Нули, полюса и коэффициент усиления непрерывной системы
Details
Создадим систему со следующей передаточной функцией
Найдем нули, полюса и коэффициент усиления системы. Используем функцию eqtflength, чтобы убедиться, что числитель и знаменатель имеют одинаковую длину.
import EngeeDSP.Functions: eqtflength, tf2zp
b = [2 3]
a = [1 1/sqrt(2) 1/4]
b, a = eqtflength(b, a)
z, p, k = tf2zp(b, a)
println("z = ", z, "\np = ", p, "\nk = ", k)
z = [-1.5, 0.0]
p = ComplexF64[-0.35355339059327373 - 0.35355339059327384im, -0.35355339059327373 + 0.35355339059327384im]
k = 2.0
Построим график полюсов и нулей, чтобы убедиться, что они находятся в ожидаемых местах. Добавим на график единичную окружность для наглядности.
import Pkg
Pkg.add("ControlSystems")
using ControlSystems
H = tf(b, a)
z, p = tzeros(H), poles(H)
pzmap(H)
annotate!([(real(zi)+0.1, imag(zi), text("Zero", 8)) for zi in z])
annotate!([(real(pi)+0.1, imag(pi), text("Pole", 8)) for pi in p])
θ = range(0, 2π, length=200)
plot!(cos.(θ), sin.(θ),
ls=:dash, color=:black,
label="Unit Circle", aspect_ratio=:equal)
display(plot!())
