zpk

Модель с нулями , полюса и усиления

    Описание

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

    Модели нули , полюса и усиления являются представлением передаточных функций в факторизованном виде. Для примера рассмотрите следующую передаточную функцию SISO в непрерывном времени:

    G(s)=s23s4s2+5s+6

    G(s) может быть факторизирован в форму с нулями , полюса и усиления как:

    G(s)=(s+1)(s4)(s+2)(s+3).

    Более общее представление модели нулевого полюса SISO с нулями , полюса и усиления выглядит следующим образом:

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

    Здесь, z и p являются векторами действительных или комплексных нулей и полюсов, и K - действительный или комплексный скалярный коэффициент усиления

    Можно создать объект модели с нулями , полюса и усиления либо путем определения полюсов, нулей и усилений непосредственно, либо путем преобразования модели другого типа (такой как модель пространства состояний ss) в форму нули , полюса и усиления.

    Можно также использовать zpk для создания обобщенного пространства состояний (genss) моделирует или неопределенное пространство состояний (uss (Robust Control Toolbox)) модели.

    Создание

    Описание

    пример

    sys = zpk(zeros,poles,gain) создает непрерывную модель с нулями , полюса и усиления с zeros и poles задается как векторы и скалярное значение gain. Область выхода sys является zpk объект модели, хранящий данные модели. Задайте zeros или poles на [] для систем без нулей или полюсов. Эти два входов не должны иметь одинаковую длину, и модель не должна быть правильной (то есть иметь избыток полюсов).

    пример

    sys = zpk(zeros,poles,gain,ts) создает модель с нулями , полюса и усиления в дискретном времени со шаг расчета ts. Задайте ts на -1 или [] оставить шагам расчета неуточненным.

    пример

    sys = zpk(zeros,poles,gain,ltiSys) создает модель с нулями , полюса и усиления со свойствами, унаследованными от динамической системы ltiSys, включая шаг расчета.

    пример

    sys = zpk(m) создает модель с нулями , полюса и усиления, которая представляет статический коэффициент усиления m.

    пример

    sys = zpk(___,Name,Value) устанавливает Свойства модели с нулями , полюса и усиления, используя один или несколько аргументы пары "имя-значение" для любой из предыдущих комбинаций входных аргументов.

    пример

    sys = zpk(ltiSys) преобразует модель динамической системы ltiSys к модели с нулями , полюса и усиления.

    пример

    sys = zpk(ltiSys,component) преобразует указанную component от ltiSys в форму модели с нулями , полюса и усиления. Используйте этот синтаксис только при ltiSys является идентифицированной линейной инвариантной по времени моделью (LTI), такой как idss или idtf модель.

    пример

    s = zpk('s') создает специальную переменную s который можно использовать в рациональном выражении, чтобы создать непрерывную модель с нулями , полюса и усиления. Использование рационального выражения иногда может быть проще и интуитивнее, чем определение полиномиальных коэффициентов.

    пример

    z = zpk('z',ts) создает специальную переменную z который можно использовать в рациональном выражении, чтобы создать модель с нулями , полюса и усиления в дискретном времени. Чтобы оставить шаг расчета неопределенным, установите ts входной параметр в -1.

    Входные параметры

    расширить все

    Нули модели нули , полюса и усиления, заданные как:

    Для образца, если a является realp настраиваемый параметр с номинальным значением 3, тогда можно использовать zeros = [1 2 a] для создания genss модель с нулями в s = 1 и s = 2 и настраиваемый нуль в s = 3.

    Также свойство zpk объект. Этот входной параметр устанавливает начальное значение свойства Z.

    Полюса модели нули , полюса и усиления, заданные как:

    Также свойство zpk объект. Этот входной параметр устанавливает начальное значение свойства P.

    Коэффициент усиления модели нулей , полюса и усиления, заданный как:

    Также свойство zpk объект. Этот входной параметр устанавливает начальное значение свойства K.

    Шаг расчета, заданный как скаляр. Также свойство zpk объект. Этот входной параметр устанавливает начальное значение свойства Ts.

    Динамическая система, заданная как SISO или MIMO динамическая системная модель или массив динамических системных моделей. Динамические системы, которые можно использовать, включают:

    • Непрерывные или дискретные числовые модели LTI, такие как tf, zpk, ss, или pid модели.

    • Обобщенные или неопределенные модели LTI, такие как genss или uss (Robust Control Toolbox) модели. (Для использования неопределенных моделей требуется лицензия Robust Control Toolbox™.)

      Получившиеся нули , полюса и усиления модель принимают

      • текущие значения настраиваемых компонентов для настраиваемых блоков проекта системы управления.

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

    • Идентифицированные модели LTI, такие как idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox), idpoly (System Identification Toolbox), и idgrey (System Identification Toolbox) модели. Чтобы выбрать компонент идентифицированной модели для преобразования, задайте component. Если вы не задаете component, tf преобразует измеренный компонент идентифицированной модели по умолчанию. (Использование идентифицированных моделей требует System Identification Toolbox™ программного обеспечения.)

      Идентифицированная нелинейная модель не может быть преобразована в zpk объект модели. Вы можете сначала использовать линейные функции приближения, такие как linearize и linapp (Для выполнения этой функции требуется программное обеспечение System Identification Toolbox.)

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

    Компонент идентифицированной модели для преобразования, заданный как один из следующих:

    • 'measured' - Преобразуйте измеренный компонент sys.

    • 'noise' - Преобразуйте шумовой компонент sys

    • 'augmented' - Преобразуйте как измеренную, так и шумовые компоненты sys.

    component применяется только тогда, когда sys является идентифицированной моделью LTI.

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

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

    расширить все

    Системная модель, возвращенная как:

    • A нулей , полюса и усиления (zpk) объект модели, когда zeros, poles и gain входные параметры содержат числовые значения.

    • Обобщенная модель пространства состояний (genss) объект, когда zeros, poles и gain входные параметры включают настраиваемые параметры, такие как realp параметры или обобщенные матрицы (genmat).

    • Модель неопределенного пространства состояний (uss) объект, когда zeros, poles и gain входные параметры включают неопределенные параметры. Для использования неопределенных моделей требуется лицензия Robust Control Toolbox.

    Свойства

    расширить все

    Системные нули, заданные как:

    • Массив ячеек с нулями передаточной функции или корнями числителя для моделей SISO.

    • Система координат Ny-by- Nu массив ячеек из векторов-строк нулей для каждой пары ввода-вывода в модели MIMO, где Ny количество выходов и Nu - количество входов.

    Значения Z может быть либо реальным, либо комплексным.

    Системные столбы, заданные как:

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

    • Система координат Ny-by- Nu массив ячеек из векторов-строк полюсов для каждой пары ввода-вывода в модели MIMO, где Ny количество выходов и Nu - количество входов.

    Значения P может быть либо реальным, либо комплексным.

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

    • Скалярное значение для моделей SISO.

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

    Значения K может быть либо реальным, либо комплексным.

    Задает, как числитель и полиномы знаменателя факторизированы для отображения, заданное как одно из следующего:

    • 'roots' - Отображать факторы в терминах расположения полиномиальных корней. 'roots' - значение по умолчанию DisplayFormat

    • 'frequency' - Отображение коэффициенты в терминах корневых естественных частот ω 0 и коэффициенты затухания ζ .

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

    • 'time constant' - Отображать коэффициенты в терминах корневых временных констант τ и коэффициентов затухания ζ.

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

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

    DisplayName ЗначениеКоэффициент первого порядка (реальный корень R)Коэффициент второго порядка (пара комплексных корней R=a±jb)
    'roots'(sR)(s2αs+β), где α=2a, β=a2+b2
    'frequency'(1sω0), где ω0=R12ζ(sω0)+(sω0)2, где ω02=a2+b2, ζ=aω0
    'time constant'(1τs), где τ=1R12ζ(τs)+(τs)2, где τ=1ω0, ζ=aτ

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

    sw=z1Ts;RR1Ts,

    где Ts - шаг расчета. В дискретном времени τ и ω 0 тесно совпадают с постоянной по времени и естественной частотой эквивалентного корня непрерывного времени при условии выполнения следующего условия :|z1|<<Ts(ω0<<πTs=Частота Нюквиста ).

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

    • 's' - По умолчанию для моделей в непрерывном времени

    • 'z' - По умолчанию для моделей в дискретном времени

    • 'p' - Эквивалентно 's'

    • 'q' - Эквивалентно 'z'

    • 'z^-1' - Обратное 'z'

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

    Задержка транспортировки, указанная как одно из следующего:

    • Скаляр - Задает задержку переноса для системы SISO или ту же задержку переноса для всех пар вход/выход системы MIMO.

    • Ny-by- Nu массив - Задайте отдельные задержки транспорта для каждой входно-выходной пары системы MIMO. Здесь, Ny количество выходов и Nu - количество входов.

    Для систем непрерывного времени задайте задержки транспорта в модуле времени, заданной TimeUnit свойство. Для систем в дискретном времени задайте задержки транспорта в целочисленных множителях шага расчета, Ts. Для получения дополнительной информации о временной задержке см. Раздел «Задержки в линейных системах».

    Входная задержка для каждого входного канала, заданная как одно из следующего:

    • Скаляр - Задает входную задержку для системы SISO или ту же задержку для всех входов мультивхода.

    • Nu-by-1 вектор - Задайте отдельные задержки входных параметров для входа мультивхода, где Nu - количество входов.

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

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

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

    • Скаляр - Задает выходную задержку для системы SISO или ту же задержку для всех выходов мультивыхода.

    • Ny-by-1 вектор - Задайте отдельные выходные задержки для вывода мультивыхода, где Ny - количество выходов.

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

    Для получения дополнительной информации смотрите Задержки в Линейных системах.

    Шаг расчета, заданная как:

    • 0 для систем непрерывного времени.

    • A положительной скалярной величины, представляющее период дискретной дискретной системы времени. Задайте Ts в модуле времени, заданной TimeUnit свойство.

    • -1 для системы в дискретном времени с неопределенным шагом расчета.

    Примечание

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

    Модули переменной времени, заданные как одно из следующего:

    • 'nanoseconds'

    • 'microseconds'

    • 'milliseconds'

    • 'seconds'

    • 'minutes'

    • 'hours'

    • 'days'

    • 'weeks'

    • 'months'

    • 'years'

    Изменение TimeUnit не влияет на другие свойства, но изменяет общее поведение системы. Использовать chgTimeUnit для преобразования между модулями времени без изменения поведения системы.

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

    • Вектор символов, для моделей с одним входом.

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

    • '', имена для каких-либо входов каналов не заданы.

    Кроме того, можно назначить входные имена для мультивходов с помощью автоматического расширения вектора. Для примера, если sys является моделью с двумя входами, введите:

    sys.InputName = 'controls';

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

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

    Использование InputName кому:

    • Идентифицируйте каналы на отображении модели и графиках.

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

    • Задайте точки соединения при соединении моделей.

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

    • Вектор символов, для моделей с одним входом.

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

    • '', никаких модулей, заданных для любых входных каналов.

    Использование InputUnit для определения модулей входного сигнала. InputUnit не влияет на поведение системы.

    Входные группы каналов, заданные как структура. Использование InputGroup присвоение входных каналов систем MIMO группам и указание каждой группы по имени. Имена полей InputGroup являются именами групп, а значения полей являются входными каналами каждой группы. Для примера:

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

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

    sys(:,'controls')

    По умолчанию InputGroup - структура без полей.

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

    • Вектор символов, для моделей с одним выходом.

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

    • '', имена для каких-либо выходов каналов не заданы.

    Кроме того, можно назначить выходные имена для мультивыходов с помощью автоматического расширения вектора. Для примера, если sys является двухвыпускной моделью, введите:

    sys.OutputName = 'measurements';

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

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

    Использование OutputName кому:

    • Идентифицируйте каналы на отображении модели и графиках.

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

    • Задайте точки соединения при соединении моделей.

    Выход модулей канала, заданный как один из следующих:

    • Вектор символов, для моделей с одним выходом.

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

    • '', никакие модули не заданы для каких-либо выходов каналов.

    Использование OutputUnit для определения модулей выходного сигнала. OutputUnit не влияет на поведение системы.

    Выходные группы каналов, заданные как структура. Использование OutputGroupприсвоение выходных каналов систем MIMO группам и указание каждой группы по имени. Имена полей OutputGroup - имена групп, а значения полей являются выходными каналами каждой группы. Для примера:

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

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

    sys('measurement',:)

    По умолчанию OutputGroup - структура без полей.

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

    Заданный пользователем текст, который необходимо связать с системой, заданный как вектор символов или массив ячеек векторов символов. Для примера, 'System is MIMO'.

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

    Сетка дискретизации для массивов моделей, заданная как массив структур.

    Использование SamplingGrid чтобы отследить значения переменных, сопоставленные с каждой моделью в массиве моделей, включая идентифицированные линейные инвариантные по времени (IDLTI) массивы моделей.

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

    Для примера можно создать массив линейных моделей 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 (Simulink Control Design) и slLinearizer (Simulink Control Design) заполните SamplingGrid автоматически.

    По умолчанию SamplingGrid - структура без полей.

    Функции объекта

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

    расширить все

    stepПереходный процесс динамической системы; переходные характеристики
    impulseГрафик импульсной характеристики динамической системы; данные импульсной характеристики
    lsimПостройте моделируемую временную характеристику динамической системы на произвольные входы; симулированные отклики
    bodeДиаграмма Боде частотной характеристики, или данные величины и фазы
    nyquistГодограф Найквиста частотной характеристики
    nicholsГрафик Николса частотной характеристики
    bandwidthПолоса пропускания частотной характеристики
    poleПолюса динамической системы
    zeroНули и усиление динамической системы SISO
    pzplotДиаграмма нулей и полюсов динамической модели системы с опциями индивидуальной настройки графика
    marginЗапас по амплитуде, запас по фазе и частоты среза
    tfМодель передаточной функции
    ssМодель пространства состояний
    c2dПреобразуйте модель из непрерывной в дискретное время
    d2cПреобразуйте модель из дискретного в непрерывное время
    d2dПовторная выборка модели в дискретном времени
    feedbackCоединение обратной связи многих моделей
    connectБлок взаимосвязей динамических систем
    seriesПоследовательное соединение двух моделей
    parallelПараллельное соединение двух моделей
    pidtuneАлгоритм настройки ПИДа для линейной модели объекта управления
    rlocusКорневой годограф динамической системы
    lqrПроект линейно-квадратичного регулятора (LQR)
    lqgЛинейно-квадратичный-Гауссов (LQG) проект
    lqiЛинейно-квадратичное-интегральное управление
    kalmanПроект фильтра Калмана для оценки состояния

    Примеры

    свернуть все

    В данном примере рассмотрим следующую модель SISO с нулями , полюса и усиления в непрерывном времени:

    sys(s)=-2s(s-1-i)(s-1+i)(s-2)Непрерывная модель с нулями , полюса и усиления

    Задайте нули, полюсы и усиление и создайте модель SISO с нулями , полюса и усиления.

    zeros = 0;
    poles = [1-1i 1+1i 2];
    gain = -2;
    sys = zpk(zeros,poles,gain)
    sys =
     
              -2 s
      --------------------
      (s-2) (s^2 - 2s + 2)
     
    Continuous-time zero/pole/gain model.
    

    В данном примере рассмотрите следующую модель SISO в дискретном времени с нулями , полюса и усиления со шаг расчета 0,1 с:

    sys(s)=7(z-1)(z-2)(z-3)(z-6)(z-5)(z-4)Модель SISO с нулями , полюса и усиления в дискретном времени

    Задайте нули, полюсы, усиления и шаг расчета и создайте модель SISO с нулями , полюса и усиления в дискретном времени.

    zeros = [1 2 3];
    poles = [6 5 4];
    gain = 7;
    ts = 0.1;
    sys = zpk(zeros,poles,gain,ts)
    sys =
     
      7 (z-1) (z-2) (z-3)
      -------------------
       (z-6) (z-5) (z-4)
     
    Sample time: 0.1 seconds
    Discrete-time zero/pole/gain model.
    

    В этом примере вы создаете модель с нулями , полюса и усиления MIMO путем конкатенации моделей с нулями , полюса и усиления SISO. Рассмотрим следующую модель с одним входом, двумя выходами с непрерывным временем нули , полюса и усиления:

    sys(s)=[(s-1)(s+1)(s+2)(s+2+i)(s+2-i)].

    Задайте модель MIMO с нулями , полюса и усиления путем конкатенации записей SISO.

    zeros1 = 1;
    poles1 = -1;
    gain = 1;
    sys1 = zpk(zeros1,poles1,gain)
    sys1 =
     
      (s-1)
      -----
      (s+1)
     
    Continuous-time zero/pole/gain model.
    
    zeros2 = -2;
    poles2 = [-2+1i -2-1i];
    sys2 = zpk(zeros2,poles2,gain)
    sys2 =
     
          (s+2)
      --------------
      (s^2 + 4s + 5)
     
    Continuous-time zero/pole/gain model.
    
    sys = [sys1;sys2]
    sys =
     
      From input to output...
           (s-1)
       1:  -----
           (s+1)
     
               (s+2)
       2:  --------------
           (s^2 + 4s + 5)
     
    Continuous-time zero/pole/gain model.
    

    Создайте модель с нулями , полюса и усиления для модели с дискретным временем, несколькими входами и несколькими выходами:

    sys(z)=[1(z+0.3)z(z+0.3)-(z-2)(z+0.3)3(z+0.3)]Модель MIMO с нулями , полюса и усиления в дискретном времени

    со шаг расчета ts = 0.2 секунд.

    Задайте нули и полюсы как массивы ячеек, а усиления как массив.

    zeros = {[] 0;2 []};
    poles = {-0.3 -0.3;-0.3 -0.3};
    gain = [1 1;-1 3];
    ts = 0.2;

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

    sys = zpk(zeros,poles,gain,ts)
    sys =
     
      From input 1 to output...
              1
       1:  -------
           (z+0.3)
     
           - (z-2)
       2:  -------
           (z+0.3)
     
      From input 2 to output...
              z
       1:  -------
           (z+0.3)
     
              3
       2:  -------
           (z+0.3)
     
    Sample time: 0.2 seconds
    Discrete-time zero/pole/gain model.
    

    Задайте нули, полюсы и усиление вместе со шагом расчета и создайте модель с нулевым полюсом и нулями , полюса и усиления, задав состояние и входные имена с помощью пар "имя-значение".

    zeros = 4;
    poles = [-1+2i -1-2i];
    gain = 3;
    ts = 0.05;
    sys = zpk(zeros,poles,gain,ts,'InputName','Force')
    sys =
     
      From input "Force" to output:
         3 (z-4)
      --------------
      (z^2 + 2z + 5)
     
    Sample time: 0.05 seconds
    Discrete-time zero/pole/gain model.
    

    Количество имен входа должно совпадать с количеством нулей.

    Наименование входов и выходов может быть полезно при работе с графиками отклика для систем MIMO.

    step(sys)

    Figure contains an axes. The axes with title From: Force To: Out(1) contains an object of type line. This object represents sys.

    Заметьте входное имя Force в названии переходного процесса.

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

    Рассмотрите следующую систему:

    sys(s)=ss2+2s+10.

    Чтобы создать модель передаточной функции, сначала задайте s как zpk объект.

    s = zpk('s')
    s =
     
      s
     
    Continuous-time zero/pole/gain model.
    

    Создайте модель с нулями , полюса и усиления, используя s в рациональном выражении.

    sys = s/(s^2 + 2*s + 10)
    sys =
     
             s
      ---------------
      (s^2 + 2s + 10)
     
    Continuous-time zero/pole/gain model.
    

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

    Рассмотрите следующую систему:

    sys(z)=z-1z2-1.85z+0.9.Дискретная модель с нулями , полюса и усиления

    Чтобы создать модель с нулями , полюса и усиления, сначала задайте z как zpk объект и шаг расчета ts.

    ts = 0.1;
    z = zpk('z',ts)
    z =
     
      z
     
    Sample time: 0.1 seconds
    Discrete-time zero/pole/gain model.
    

    Создайте модель с нулями , полюса и усиления с помощью z в рациональном выражении.

    sys = (z - 1) / (z^2 - 1.85*z + 0.9)
    sys =
     
             (z-1)
      -------------------
      (z^2 - 1.85z + 0.9)
     
    Sample time: 0.1 seconds
    Discrete-time zero/pole/gain model.
    

    В данном примере создайте модель с нулями , полюса и усиления со свойствами, унаследованными от другой модели с нулями , полюса и усиления. Рассмотрим следующие две модели с нулем , полюса и усиления:

    sys1(s)=2ss(s+8)andsys2(s)=0.8(s-1)(s+3)(s-5).Две модели с нулем , полюса и усиления с унаследованными свойствами

    В данном примере создайте sys1 с TimeUnit и InputDelay значение свойства установлено на 'minutes'.

    zero1 = 0;
    pole1 = [0;-8];
    gain1 = 2;
    sys1 = zpk(zero1,pole1,gain1,'TimeUnit','minutes','InputUnit','minutes')
    sys1 =
     
        2 s
      -------
      s (s+8)
     
    Continuous-time zero/pole/gain model.
    
    propValues1 = [sys1.TimeUnit,sys1.InputUnit]
    propValues1 = 1x2 cell
        {'minutes'}    {'minutes'}
    
    

    Создайте вторую модель с нулями , полюса и усиления с свойствами, унаследованными от sys1.

    zero = 1;
    pole = [-3,5];
    gain2 = 0.8;
    sys2 = zpk(zero,pole,gain2,sys1)
    sys2 =
     
       0.8 (s-1)
      -----------
      (s+3) (s-5)
     
    Continuous-time zero/pole/gain model.
    
    propValues2 = [sys2.TimeUnit,sys2.InputUnit]
    propValues2 = 1x2 cell
        {'minutes'}    {'minutes'}
    
    

    Заметьте, что модель с нулями , полюса и усиления sys2 имеет те же свойства, что и sys1.

    Рассмотрим следующую статическую матрицу усиления с двумя входами m:

    m=[2435]MIMO статическая матрица усиления

    Задайте матрицу усиления и создайте статическую модель усиления с нулями , полюса и усиления.

    m = [2,4;...
        3,5];
    sys1 = zpk(m)
    sys1 =
     
      From input 1 to output...
       1:  2
     
       2:  3
     
      From input 2 to output...
       1:  4
     
       2:  5
     
    Static gain.
    

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

    sys2 = zpk(0,[-1 7],1)
    sys2 =
     
           s
      -----------
      (s+1) (s-7)
     
    Continuous-time zero/pole/gain model.
    
    sys = series(sys1,sys2)
    sys =
     
      From input 1 to output...
               2 s
       1:  -----------
           (s+1) (s-7)
     
               3 s
       2:  -----------
           (s+1) (s-7)
     
      From input 2 to output...
               4 s
       1:  -----------
           (s+1) (s-7)
     
               5 s
       2:  -----------
           (s+1) (s-7)
     
    Continuous-time zero/pole/gain model.
    

    В данном примере вычислите модель с нулями , полюса и усиления для следующей модели с пространством состояний:

    A=[-2-11-2],B=[112-1],C=[10],D=[01].Матрицы пространства состояний

    Создайте модель пространства состояний с помощью матриц пространства состояний.

    A = [-2 -1;1 -2];
    B = [1 1;2 -1];
    C = [1 0];
    D = [0 1];
    ltiSys = ss(A,B,C,D);

    Преобразуйте модель пространства состояний ltiSys к модели с нулями , полюса и усиления.

    sys = zpk(ltiSys)
    sys =
     
      From input 1 to output:
            s
      --------------
      (s^2 + 4s + 5)
     
      From input 2 to output:
      (s^2 + 5s + 8)
      --------------
      (s^2 + 4s + 5)
     
    Continuous-time zero/pole/gain model.
    

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

    Во-первых, предварительно выделите массив моделей с нулями , полюса и усиления с нулями.

    sys = zpk(zeros(1,1,3));

    Первые два индекса представляют количество выходов и входов для моделей, в то время как третий индекс является количеством моделей в массиве.

    Создайте массив моделей с нулями , полюса и усиления с помощью рационального выражения в for цикл.

    s = zpk('s');                                                  
    for k = 1:3                                                             
        sys(:,:,k) = k/(s^2+s+k);                                          
    end
    sys
    sys(:,:,1,1) =
     
            1
      -------------
      (s^2 + s + 1)
     
    
    sys(:,:,2,1) =
     
            2
      -------------
      (s^2 + s + 2)
     
    
    sys(:,:,3,1) =
     
            3
      -------------
      (s^2 + s + 3)
     
    3x1 array of continuous-time zero/pole/gain models.
    

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

    Загрузка полиномиальной модели Бокса-Дженкинса ltiSys в identifiedModel.mat.

    load('identifiedModel.mat','ltiSys');

    ltiSys - идентифицированная модель вида в дискретном времени: y(t)=BFu(t)+CDe(t), где BF представляет измеренный компонент, CD шумовым компонентом.

    Извлеките измеренные и шумовые компоненты как модели с нулями , полюса и усиления.

    sysMeas = zpk(ltiSys,'measured') 
    sysMeas =
     
      From input "u1" to output "y1":
                -0.14256 z^-1 (1-1.374z^-1)
      z^(-2) * -----------------------------
               (1-0.8789z^-1) (1-0.6958z^-1)
     
    Sample time: 0.04 seconds
    Discrete-time zero/pole/gain model.
    
    sysNoise = zpk(ltiSys,'noise')
    sysNoise =
     
      From input "v@y1" to output "y1":
                0.045563 (1+0.7245z^-1)
      --------------------------------------------
      (1-0.9658z^-1) (1 - 0.0602z^-1 + 0.2018z^-2)
     
    Input groups:        
        Name     Channels
        Noise       1    
                         
    Sample time: 0.04 seconds
    Discrete-time zero/pole/gain model.
    

    Измеренный компонент может служить моделью объекта управления, в то время как шумовой компонент может использоваться в качестве модели возмущения для разработки системы управления.

    В данном примере создайте модель SISO с нулями , полюса и усиления с задержкой на входе 0,5 секунды и задержкой на выходе 2,5 секунды.

    zeros = 5;
    poles = [7+1i 7-1i -3];
    gains = 1;
    sys = zpk(zeros,poles,gains,'InputDelay',0.5,'OutputDelay',2.5)
    sys =
     
                          (s-5)
      exp(-3*s) * ----------------------
                  (s+3) (s^2 - 14s + 50)
     
    Continuous-time zero/pole/gain model.
    

    Можно также использовать get команда для отображения всех свойств объекта MATLAB.

    get(sys)
                    Z: {[5]}
                    P: {[3x1 double]}
                    K: 1
        DisplayFormat: 'roots'
             Variable: 's'
              IODelay: 0
           InputDelay: 0.5000
          OutputDelay: 2.5000
                   Ts: 0
             TimeUnit: 'seconds'
            InputName: {''}
            InputUnit: {''}
           InputGroup: [1x1 struct]
           OutputName: {''}
           OutputUnit: {''}
          OutputGroup: [1x1 struct]
                Notes: [0x1 string]
             UserData: []
                 Name: ''
         SamplingGrid: [1x1 struct]
    

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

    В данном примере разработайте 2-DOF ПИД-регуляторы с целевой шириной полосы 0,75 рад/с для системы, представленной следующей нулям , полюса и усиления моделью:

    sys(s)=1s2+0.5s+0.1Модель с нулями , полюса и усиления

    Создайте объект модели с нулями , полюса и усиления sys использование zpk команда.

    zeros = [];
    poles = [-0.25+0.2i;-0.25-0.2i];
    gain = 1;
    sys = zpk(zeros,poles,gain)
    sys =
     
                1
      ---------------------
      (s^2 + 0.5s + 0.1025)
     
    Continuous-time zero/pole/gain model.
    

    Используя целевую полосу пропускания, используйте pidtune чтобы сгенерировать контроллер 2-DOF.

    wc = 0.75;
    C2 = pidtune(sys,'PID2',wc)
    C2 =
     
                           1              
      u = Kp (b*r-y) + Ki --- (r-y) + Kd*s (c*r-y)
                           s              
    
      with Kp = 0.512, Ki = 0.0975, Kd = 0.574, b = 0.38, c = 0
     
    Continuous-time 2-DOF PID controller in parallel form.
    

    Использование типа 'PID2' причины pidtune чтобы сгенерировать контроллер 2-DOF, представленный как pid2 объект. Отображение подтверждает этот результат. На отображении также показано, что pidtune настраивает все коэффициенты контроллера, включая веса уставок b и c, для баланса эффективности и робастности.

    Интерактивную настройку ПИД в Live Editor см. в задаче Tune ПИД-регулятора Live Editor. Эта задача позволяет вам в интерактивном режиме проектировать ПИД-регулятор и автоматически генерирует код MATLAB для вашего live скрипта.

    Для интерактивной настройки ПИД в автономном приложении используйте PID Tuner. Смотрите ПИД-регулятор Design для Fast Reference Tracking для примера разработки контроллера с помощью приложения.

    Алгоритмы

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

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