zpk

Создайте модель нулей и полюсов; преобразуйте в модель нулей и полюсов

Синтаксис

sys = zpk(Z,P,K)
sys = zpk(Z,p,k,Ts)
sys = zpk(M)
sys = zpk(Z,p,k,ltisys)
s = zpk('s')
z = zpk('z',Ts)
zsys = zpk(sys)
zsys = zpk(sys, 'measured')
zsys = zpk(sys, 'noise')
zsys = zpk(sys, 'augmented')

Описание

Используемый zpk, чтобы создать модели нулей и полюсов (объекты модели zpk) или преобразовать динамические системы в форму нулей и полюсов.

Создание моделей нулей и полюсов

sys = zpk(Z,P,K) создает непрерывно-разовую модель нулей и полюсов с нулями Z, P полюсов и усиление (усиления) K. Вывод sys является объектом модели zpk, хранящим данные модели.

В случае SISO Z и P являются векторами действительных - или нули с комплексным знаком и полюса, и K является действительным - или скалярное усиление с комплексным знаком:

h(s)=k(sz(1))(sz(2))(sz(m))(sp(1))(sp(2))(sp(n))

Установите Z или p к [] для систем без нулей или полюсов. Эти два вектора не должны иметь равной длины и образцовой потребности не быть соответствующими (то есть, иметь избыток полюсов).

Чтобы создать модель нулей и полюсов MIMO, задайте нули, полюса и усиление каждой записи SISO этой модели. В этом случае:

  • Z и P являются массивами ячеек векторов со столькими же строк сколько выходные параметры и столько же столбцов сколько входные параметры, и K является матрицей со столькими же строк сколько выходные параметры и столько же столбцов сколько входные параметры.

  • Векторы Z{i,j} и P{i,j} задают нули и полюса передаточной функции от входа j до вывода i.

  • K(i,j) задает (скалярное) усиление передаточной функции от входа j до вывода i.

Смотрите ниже для примера MIMO.

sys = zpk(Z,p,k,Ts) создает модель нулей и полюсов дискретного времени с шагом расчета Ts (в секундах). Установите Ts = -1 или Ts = [] оставлять шаг расчета незаданным. Входные параметры Z, P, K как в непрерывно-разовом случае.

sys = zpk(M) задает статическое усиление M.

sys = zpk(Z,p,k,ltisys) создает модель нулей и полюсов со свойствами, наследованными от модели LTI ltisys (включая шаг расчета).

Чтобы создать массив объектов модели zpk, используйте цикл for или используйте многомерные массивы ячеек для Z и P и многомерного массива для K.

Любой из предыдущих синтаксисов может сопровождаться именем свойства / пары значения свойства.

'PropertyName',PropertyValue

Каждая пара задает конкретное свойство модели, например, входных имен или входное время задержки. Для получения дополнительной информации о свойствах объектов модели zpk, смотрите Свойства. Обратите внимание на то, что

sys = zpk(Z,P,K,'Property1',Value1,...,'PropertyN',ValueN)

ярлык для следующей последовательности команд.

sys = zpk(Z,P,K)
set(sys,'Property1',Value1,...,'PropertyN',ValueN)

Модели нулей и полюсов как Рациональные выражения в s или z

Можно также использовать рациональные выражения, чтобы создать модель ZPK. Для этого первый тип также:

  • s = zpk('s') задавать модель ZPK с помощью рациональной функции в переменной Лапласа, s.

  • z = zpk('z',Ts) задавать модель ZPK с шагом расчета Ts с помощью рациональной функции в переменной дискретного времени, z.

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

Преобразование в форму нулей и полюсов

zsys = zpk(sys) преобразовывает произвольную модель LTI sys в форму нулей и полюсов. Вывод zsys является объектом ZPK. По умолчанию zpk использует zero, чтобы вычислить нули при преобразовании от пространства состояний до нулей и полюсов. В качестве варианта,

zsys = zpk(sys,'inv')

формулы инверсии использования для моделей в пространстве состояний, чтобы вычислить нули. Этот алгоритм быстрее, но менее точен для старших моделей с низким усилением в s = 0.

Преобразование идентифицированных моделей

Идентифицированная модель представлена уравнением ввода - вывода формы y(t) = Gu(t) + He(t), где u(t) является набором измеренных входных каналов, и e(t) представляет шумовые каналы. Если Λ= LL' представляет ковариацию шумового e(t), это уравнение может также быть записано как y(t) = Gu(t) + HLv(t), где cov(v(t)) = I.

zsys = zpk(sys), или zsys = zpk(sys, 'measured') преобразовывает измеренный компонент идентифицированной линейной модели в форму ZPK. sys является моделью типа idss, idproc, idtf, idpoly или idgrey. zsys представляет отношение между u и y.

zsys = zpk(sys, 'noise') преобразовывает шумовой компонент идентифицированной линейной модели в форму ZPK. Это представляет отношение между шумовым входом, v(t) и выводом, y_noise = HL v(t). Шумовые входные каналы принадлежат 'Noise' InputGroup. Именами шумовых входных каналов является v@yname, где yname является именем соответствующего выходного канала. zsys имеет столько же входных параметров сколько выходные параметры.

zsys = zpk(sys, 'augmented') преобразовывает и измеренную и шумовую динамику в модель ZPK. zsys имеет входные параметры ny+nu, таким образом, что первые входные параметры nu представляют каналы u(t), в то время как остающиеся каналами представляют шумовые каналы v(t). zsys.InputGroup содержит 2 входных группы, 'measured' и 'noise'. zsys.InputGroup.Measured установлен в 1:nu, в то время как zsys.InputGroup.Noise установлен в nu+1:nu+ny. zsys, представляет уравнение y(t) = [G HL] [u; v].

Совет

Идентифицированная нелинейная модель не может быть преобразована в систему ZPK. Используйте функции линейной аппроксимации, такие как linearize и linapp.

Выбор переменной

Что касается передаточных функций, можно задать который переменная использовать в отображении моделей нулей и полюсов. Доступный выбор включает s (значение по умолчанию) и p для непрерывно-разовых моделей и z (значение по умолчанию), z-1, q-1 (эквивалентный z-1), или q (эквивалентный z) для моделей дискретного времени. Повторно присвойте свойство 'Variable' заменить значения по умолчанию. Замена переменной влияет только на отображение моделей нулей и полюсов.

Свойства

Объекты zpk имеют следующие свойства:

Z

Системные нули.

Свойство Z хранит нули передаточной функции (корни числителя). Для моделей SISO Z является вектором, содержащим нули. Для моделей MIMO с Ny выходные параметры и входные параметры Nu, Z является Ny-by-Nu массив ячеек векторов нулей для каждой пары ввода/вывода.

P

Системные полюса.

Свойство P хранит полюса передаточной функции (корни знаменателя). Для моделей SISO P является вектором, содержащим полюса. Для моделей MIMO с Ny выходные параметры и входные параметры Nu, P является Ny-by-Nu массив ячеек векторов полюсов для каждой пары ввода/вывода.

K

Системные усиления.

Свойство K хранит усиления передаточной функции. Для моделей SISO K является скалярным значением. Для моделей MIMO с Ny выходные параметры и входные параметры Nu, K является Ny-by-Nu матрица, хранящая усиления для каждой пары ввода/вывода.

DisplayFormat

Задает, как числитель и полиномы знаменателя разложены на множители в целях отображения.

Числитель и полиномы знаменателя каждый отображены как продукт первых - и факторы второго порядка. DisplayFormat управляет отображением тех факторов. DisplayFormat может принять следующие значения:

  • 'roots' (значение по умолчанию) — Факторы отображения с точки зрения местоположения полиномиальных корней.

  • 'frequency' — Отобразите факторы с точки зрения корневых собственных частот ω 0 и отношения затухания ζ.

    Формат отображения 'frequency' не доступен для моделей дискретного времени со значением Variable 'z^-1' или 'q^-1'.

  • 'time constant' — Отобразите факторы с точки зрения корневых временных констант τ и отношения затухания ζ.

    Формат отображения 'time constant' не доступен для моделей дискретного времени со значением Variable 'z^-1' или 'q^-1'.

Для непрерывно-разовых моделей следующая таблица показывает, как полиномиальные факторы написаны в каждом формате отображения.

Значение DisplayNameФактор первого порядка (действительный корень R)Фактор второго порядка (Комплексный Корневой парный R = a ±jb)
'roots'(sR)(s 2αs + β), где α = 2a, β = a 2 + b 2
'frequency'(1 – s/ω0), где ω 0 = R1 – 2ζ (s/ω0) + (s/ω0) 2, где ω 02  = a 2 + b 2, ζ = a/ω0
'time constant'(1 – τs), где τ = 1/R1 – 2ζ (τs) + (τs) 2, где τ = 1/ω0, ζ = 

Для моделей дискретного времени полиномиальные факторы записаны как в непрерывное время со следующими подстановками переменных:

sw=z1Ts;RR1Ts,

где Ts является шагом расчета. В дискретное время τ и ω 0 тесно совпадают с временной константой и собственной частотой эквивалентного непрерывно-разового корня, обеспечил |z–1 | ≪ Ts (ω 0 ≪ π/Ts = частота Найквиста).

Значение по умолчанию: 'roots'

Variable

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

  • S Значение по умолчанию для непрерывно-разовых моделей

  • Z Значение по умолчанию для моделей дискретного времени

  • P Эквивалентный 's'

  • Q Эквивалентный 'z'

  • 'z^-1' — Инверсия 'z'

  • 'q^-1' — Эквивалентный 'z^-1'

Значение Variable только влияет на отображение моделей zpk.

Значение по умолчанию: 's'

IODelay

Транспортные задержки. IODelay является числовым массивом, задающим отдельную транспортную задержку каждой пары ввода/вывода.

Для непрерывно-разовых систем задайте транспортные задержки единицы измерения времени, сохраненной в свойстве TimeUnit. Для систем дискретного времени задайте транспортные задержки целочисленных множителей шага расчета, Ts.

Для системы MIMO с Ny выходные параметры и входные параметры Nu, набор IODelay к Ny-by-Nu массив. Каждая запись этого массива является численным значением, которое представляет транспортную задержку соответствующей пары ввода/вывода. Можно также установить IODelay на скалярное значение применять ту же задержку со всеми парами ввода/вывода.

Значение по умолчанию: 0 для всех пар ввода/вывода

InputDelay

Введите задержку каждого входного канала, заданного как скалярное значение или числовой вектор. Для непрерывно-разовых систем задайте входные задержки единицы измерения времени, сохраненной в свойстве TimeUnit. Для систем дискретного времени задайте входные задержки целочисленных множителей шага расчета Ts. Например, InputDelay = 3 означает задержку трех шагов расчета.

Для системы с входными параметрами Nu, набор InputDelay к Nu-by-1 вектор. Каждая запись этого вектора является численным значением, которое представляет входную задержку соответствующего входного канала.

Можно также установить InputDelay на скалярное значение применять ту же задержку со всеми каналами.

Значение по умолчанию: 0

OutputDelay

Выведите задержки. OutputDelay является числовым вектором, задающим задержку каждого выходного канала. Для непрерывно-разовых систем задайте выходные задержки единицы измерения времени, сохраненной в свойстве TimeUnit. Для систем дискретного времени задайте выходные задержки целочисленных множителей шага расчета Ts. Например, OutputDelay = 3 означает задержку трех периодов выборки.

Для системы с Ny выходные параметры, набор OutputDelay к Ny-by-1 вектор, где каждая запись является численным значением, представляющим выходную задержку соответствующего выходного канала. Можно также установить OutputDelay на скалярное значение применять ту же задержку со всеми каналами.

Значение по умолчанию: 0 для всех выходных каналов

Ts

'SampleTime' . Для непрерывно-разовых моделей, Ts = 0. Для моделей дискретного времени Ts является положительной скалярной величиной, представляющей период выборки. Это значение выражается в модуле, заданном свойством TimeUnit модели. Чтобы обозначить модель дискретного времени с незаданным шагом расчета, установите Ts = -1.

Изменение этого свойства не дискретизирует или передискретизирует модель. Используйте c2d и d2c, чтобы преобразовать между непрерывным - и представлениями дискретного времени. Используйте d2d, чтобы изменить шаг расчета системы дискретного времени.

Значение по умолчанию: 0 (непрерывное время)

TimeUnit

Модули для переменной времени, шаг расчета Ts и любые задержки модели, заданной как одно из следующих значений:

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

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

Значение по умолчанию: 'seconds'

InputName

Введите названия канала, заданные как одно из следующего:

  • Вектор символов — Для моделей одно входа, например, 'controls'.

  • Массив ячеек из символьных векторов Модели мультивхода For.

Также используйте автоматическое векторное расширение, чтобы присвоить входные имена для мультивходных моделей. Например, если sys является 2D входной моделью, введите:

sys.InputName = 'controls';

Входные имена автоматически расширяются до {'controls(1)';'controls(2)'}.

Можно использовать краткое обозначение u, чтобы относиться к свойству InputName. Например, sys.u эквивалентен sys.InputName.

Входные названия канала имеют несколько использования, включая:

  • Идентификация каналов на образцовом отображении и графиках

  • Извлечение подсистем систем MIMO

  • Определение точек контакта, когда взаимосвязанные модели

Значение по умолчанию: '' для всех входных каналов

InputUnit

Введите модули канала, заданные как одно из следующего:

  • Вектор символов — Для моделей одно входа, например, 'seconds'.

  • Массив ячеек из символьных векторов Модели мультивхода For.

Используйте InputUnit, чтобы отслеживать модули входного сигнала. InputUnit не имеет никакого эффекта на поведение системы.

Значение по умолчанию: '' для всех входных каналов

InputGroup

Введите группы канала. Свойство InputGroup позволяет вам присвоить входные каналы систем MIMO в группы и обратиться к каждой группе по наименованию. Задайте входные группы как структуру. В этой структуре имена полей являются названиями группы, и значения полей являются входными каналами, принадлежащими каждой группе. Например:

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

создает входные группы под названием controls и noise, которые включают входные каналы 1, 2 и 3, 5, соответственно. Можно затем извлечь подсистему от входных параметров controls до всего выходного использования:

sys(:,'controls')

Значение по умолчанию: Struct без полей

OutputName

Выведите названия канала, заданные как одно из следующего:

  • Вектор символов — Для моделей одно вывода. Например, 'measurements'.

  • Массив ячеек из символьных векторов For модели мультивывода.

Также используйте автоматическое векторное расширение, чтобы присвоить выходные имена для мультивыходных моделей. Например, если sys является 2D выходной моделью, введите:

sys.OutputName = 'measurements';

Выходные имена автоматически расширяются до {'measurements(1)';'measurements(2)'}.

Можно использовать краткое обозначение y, чтобы относиться к свойству OutputName. Например, sys.y эквивалентен sys.OutputName.

Выходные названия канала имеют несколько использования, включая:

  • Идентификация каналов на образцовом отображении и графиках

  • Извлечение подсистем систем MIMO

  • Определение точек контакта, когда взаимосвязанные модели

Значение по умолчанию: '' для всех выходных каналов

OutputUnit

Выведите модули канала, заданные как одно из следующего:

  • Вектор символов — Для моделей одно вывода. Например, 'seconds'.

  • Массив ячеек из символьных векторов For модели мультивывода.

Используйте OutputUnit, чтобы отслеживать модули выходного сигнала. OutputUnit не имеет никакого эффекта на поведение системы.

Значение по умолчанию: '' для всех выходных каналов

OutputGroup

Выведите группы канала. Свойство OutputGroup позволяет вам присвоить выходные каналы систем MIMO в группы и обратиться к каждой группе по наименованию. Задайте выходные группы как структуру. В этой структуре имена полей являются названиями группы, и значения полей являются выходными каналами, принадлежащими каждой группе. Например:

sys.OutputGroup.temperature = [1];
sys.InputGroup.measurement = [3 5];

создает выходные группы под названием temperature и measurement, которые включают выходные каналы 1, и 3, 5, соответственно. Можно затем извлечь подсистему от всех входных параметров до measurement использование выходных параметров:

sys('measurement',:)

Значение по умолчанию: Struct без полей

Name

Имя системы, заданное как вектор символов. Например, 'system_1'.

Значение по умолчанию: ''

Notes

Любой текст, который вы хотите сопоставить с системой, сохраненной как строка или массив ячеек из символьных векторов. Свойство хранит, какой бы ни тип данных вы обеспечиваете. Например, если sys1 и sys2 являются моделями динамической системы, можно установить их свойства Notes можно следующим образом:

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

Значение по умолчанию: [0×1 string]

UserData

Любой тип данных вы хотите сопоставить с системой, заданной как любой тип данных MATLAB®.

Значение по умолчанию: []

SamplingGrid

Выборка сетки для образцовых массивов, заданных как структура данных.

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

Установите имена полей структуры данных к именам переменных выборки. Установите значения полей к выбранным значениям переменных, сопоставленным с каждой моделью в массиве. Все переменные выборки должны быть числовыми и скаляр, оцененный, и все массивы выбранных значений должны совпадать с размерностями образцового массива.

Например, предположите, что вы создаете 11 1 массив линейных моделей, sysarr, путем взятия снимков состояния линейной изменяющейся во времени системы во времена t = 0:10. Следующий код хранит выборки времени линейными моделями.

 sysarr.SamplingGrid = struct('time',0:10)

Точно так же предположите, что вы создаете 6 9 образцовый массив, M, путем независимой выборки двух переменных, zeta и w. Следующий код присоединяет значения (zeta,w) к M.

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

Когда вы отображаете M, каждая запись в массиве включает соответствующий zeta и значения w.

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

Для образцовых массивов, сгенерированных путем линеаризации модели Simulink® в нескольких значениях параметров или рабочих точках, программное обеспечение заполняет SamplingGrid автоматически со значениями переменных, которые соответствуют каждой записи в массиве. Например, команды Simulink Control Design™ linearize и slLinearizer заполняют SamplingGrid таким образом.

Значение по умолчанию: []

Примеры

Пример 1

Создайте непрерывно-разовую передаточную функцию SISO:

h(s)=2s(s1+j)(s1j)(s2)

Создайте h (s) как использование объекта zpk:

h = zpk(0, [1-i 1+i 2], -2);

Пример 2

Задайте следующее с одним входом, 2D выходную модель нулей и полюсов:

H(z)=[1z0.32(z+0.5)(z0.1+j)(z0.1j)].

Для этого, введите:

Z = {[] ; -0.5};
P = {0.3 ; [0.1+i 0.1-i]};
K = [1 ; 2];
H = zpk(Z,P,K,-1);    % unspecified sample time

Пример 3

Преобразуйте передаточную функцию

h = tf([-10 20 0],[1 7 20 28 19 5]);

к форме нулей и полюсов, с помощью:

zpk(h)

Эта команда возвращает результат:

Zero/pole/gain:
     -10 s (s-2)
----------------------
(s+1)^3 (s^2 + 4s + 5)

Пример 4

Создайте модель ZPK дискретного времени из рационального выражения в переменной z.

z = zpk('z',0.1); 
H = (z+.1)*(z+.2)/(z^2+.6*z+.09)

Эта команда возвращает следующий результат:

Zero/pole/gain:
(z+0.1) (z+0.2)
---------------
   (z+0.3)^2
 
Sample time: 0.1

Пример 5

Создайте модель MIMO zpk с помощью массивов ячеек нулей и полюсов.

Создайте 2D вход, 2D выходную модель нулей и полюсов

H(s)=[1s3(s+5)(s+1)22(s22s+2)(s1)(s2)(s3)0]

путем ввода:

Z = {[],-5;[1-i 1+i] []};

P = {0,[-1 -1];[1 2 3],[]};

K = [-1 3;2 0];

H = zpk(Z,P,K);

Используйте [] в качестве заполнителя в Z или P, когда соответствующая запись H (s) не будет иметь никаких нулей или полюсов.

Пример 6

Извлеките измеренные и шумовые компоненты идентифицированной полиномиальной модели в две отдельных модели ZPK. Первый (измеренный компонент) может служить моделью объекта управления, в то время как последний может служить возмущением для проекта системы управления.

load icEngine
z = iddata(y,u,0.04);
nb = 2; nf = 2; nc = 1; nd = 3; nk = 3;
sys = bj(z, [nb nc nd nf nk]);

sys является моделью формы, y(t) = B/F u(t) + C/D e(t), где B/F представляет измеренный компонент и C/D шумовой компонент.

sysMeas = zpk(sys, 'measured') 

Также использование может просто использовать zpk(sys), чтобы извлечь измеренный компонент.

sysNoise = zpk(sys, 'noise')

Алгоритмы

zpk использует функцию MATLAB roots, чтобы преобразовать передаточные функции и функции zero и pole, чтобы преобразовать модели в пространстве состояний.

Смотрите также

| | | | |

Представлено до R2006a