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 = [] оставить шаг расчета незаданным. Входные параметры ZPK как в случае непрерывного времени.

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). Шумовые входные каналы принадлежат InputGroup 'Noise'. Именами шумовых входных каналов является 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- Nu массив ячеек векторов нулей для каждой пары ввода/вывода.

P

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

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

K

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

K свойство хранит усиления передаточной функции. Для моделей SISO, K скалярное значение. Для моделей MIMO с Ny выходные параметры и Nu входные параметры, K Ny- 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- Nu массив. Каждая запись этого массива является численным значением, которое представляет транспортную задержку соответствующей пары ввода/вывода. Можно также установить IODelay к скалярному значению, чтобы применить ту же задержку со всеми парами ввода/вывода.

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

InputDelay

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

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

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

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

OutputDelay

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

Для системы с Ny выходные параметры, набор OutputDelay к Ny- 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

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

Создайте 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