ss

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

Синтаксис

sys = ss(A,B,C,D)
sys = ss(A,B,C,D,Ts)
sys = ss(D)
sys = ss(A,B,C,D,ltisys)
sys_ss = ss(sys)
sys_ss = ss(sys,'minimal')
sys_ss = ss(sys,'explicit')
sys_ss = ss(sys, 'measured')
sys_ss = ss(sys, 'noise')
sys_ss = ss(sys, 'augmented')

Описание

Используйте ss, чтобы создать модели в пространстве состояний (объекты модели ss) с действительным - или матрицы с комплексным знаком или преобразовать модели динамической системы в форму модели в пространстве состояний. Можно также использовать ss, чтобы создать Обобщенные модели (genss) пространства состояний.

Создание моделей в пространстве состояний

sys = ss(A,B,C,D) создает объект модели в пространстве состояний представление непрерывно-разовой модели в пространстве состояний

x˙=Ax+Buy=Cx+Du

Для модели с состояниями Nx, Ny выходные параметры и входные параметры Nu:

  • A является Nx-by-Nx действительный - или матрица с комплексным знаком.

  • B является Nx-by-Nu действительный - или матрица с комплексным знаком.

  • C является Ny-by-Nx действительный - или матрица с комплексным знаком.

  • D является Ny-by-Nu действительный - или матрица с комплексным знаком.

Чтобы установить D = 0, установите D на скалярный 0 (нуль), независимо от размерности.

sys = ss(A,B,C,D,Ts) создает модель дискретного времени

x[n+1]=Ax[n]+Bu[n]y[n]=Cx[n]+Du[n]

с шагом расчета Ts (в секундах). Установите Ts = -1 или Ts = [] оставлять шаг расчета незаданным.

sys = ss(D) задает статическую матрицу усиления D и эквивалентен

sys = ss([],[],[],D)

sys = ss(A,B,C,D,ltisys) создает модель в пространстве состояний со свойствами, наследованными от модели ltisys (включая шаг расчета).

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

'PropertyName',PropertyValue

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

Следующее выражение:

sys = ss(A,B,C,D,'Property1',Value1,...,'PropertyN',ValueN)

эквивалентно последовательности команд:

sys = ss(A,B,C,D)
set(sys,'Property1',Value1,...,'PropertyN',ValueN)

Преобразование в пространство состояний

sys_ss = ss(sys) преобразовывает модель sys динамической системы в форму пространства состояний. Вывод sys_ss является эквивалентной моделью в пространстве состояний (объект модели ss). Эта операция известна как реализацию пространства состояний.

sys_ss = ss(sys,'minimal') производит реализацию пространства состояний без неконтролируемых или неразличимых состояний. Эта реализация пространства состояний эквивалентна sys_ss = minreal(ss(sys)).

sys_ss = ss(sys,'explicit') вычисляет явную реализацию (E = I) модели sys динамической системы. Если sys является неподходящим, ss возвращает ошибку.

Примечание

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

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

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

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

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

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

Совет

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

Создание обобщенных моделей в пространстве состояний

Можно использовать синтаксис:

gensys = ss(A,B,C,D)

создать Обобщенную модель (genss) пространства состояний, когда один или несколько матриц A, B, C, D является настраиваемой моделью realp или genmat. Для получения дополнительной информации об Обобщенных моделях в пространстве состояний, см. Модели с Настраиваемыми Коэффициентами.

Свойства

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

A,B,C,D,E

Матрицы пространства состояний.

  • A — матричный A состояния. Действительный квадрат - или матрица с комплексным знаком со столькими же строк сколько состояния.

  • B — матрица Входа к состоянию B. Действительный - или матрица с комплексным знаком со столькими же строк сколько состояния и столько же столбцов сколько входные параметры.

  • C — Состояние к выходной матрице C. Действительный - или матрица с комплексным знаком со столькими же строк сколько выходные параметры и столько же столбцов сколько состояния.

  • D — Проходной матричный D. Действительный - или матрица с комплексным знаком со столькими же строк сколько выходные параметры и столько же столбцов сколько входные параметры.

  • E матрица E для неявного (дескриптор) модели в пространстве состояний. e = [] по умолчанию, означая, что уравнение состояния является явным. Чтобы задать неявное уравнение состояния E dx/dt = Ax + Bu, установите это свойство на квадратную матрицу, одного размера как A. Смотрите dss для получения дополнительной информации о создании моделей в пространстве состояний дескриптора.

Scaled

Логическое значение, указывающее, включено ли масштабирование или отключено.

Когда (FALSE) Scaled = 0, большинство числовых алгоритмов, действующих на модель в пространстве состояний автоматически, повторно масштабирует вектор состояния, чтобы улучшить числовую точность. Можно отключить такое автомасштабирование (TRUE) установкой Scaled = 1. Для получения дополнительной информации о масштабировании, смотрите prescale.

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

StateName

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

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

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

  • '' — Для состояний без имени.

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

StateUnit

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

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

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

  • '' — Для состояний без заданных модулей

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

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

InternalDelay

Вектор, хранящий внутренние задержки.

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

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

Можно изменить значения внутренних задержек. Однако количество записей в sys.InternalDelay не может измениться, потому что это - структурное свойство модели.

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 таким образом.

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

Примеры

Создайте модель в пространстве состояний дискретного времени

Создайте модель в пространстве состояний с шагом расчета 0,25 секунд и следующих матриц пространства состояний:

A=[01-5-2]B=[03]C=[01]D=[0]

Задайте матрицы пространства состояний.

A = [0 1;-5 -2];
B = [0;3];
C = [0 1];
D = 0;

Задайте шаг расчета.

Ts = 0.25;

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

sys = ss(A,B,C,D,Ts);

Задайте состояние и входные имена для модели в пространстве состояний дискретного времени

Создайте матрицы пространства состояний и задайте шаг расчета.

A = [0 1;-5 -2];
B = [0;3];
C = [0 1];
D = 0;
Ts = 0.05;

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

sys = ss(A,B,C,D,Ts,'StateName',{'Position' 'Velocity'},...
                    'InputName','Force');

Количество состояния и входных имен должно быть сопоставимо с размерностями A, B, C и D.

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

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

H(s)=[s+1s3+3s2+3s+2s2+3s2+s+1]

Создайте модель передаточной функции.

H = [tf([1 1],[1 3 3 2]) ; tf([1 0 3],[1 1 1])];

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

sys = ss(H);

Исследуйте размер модели в пространстве состояний.

size(sys)
State-space model with 2 outputs, 1 inputs, and 5 states.

Количество состояний равно совокупному порядку записей SISO в H (s).

Чтобы получить минимальную реализацию H (s), войти

sys = ss(H,'minimal');
size(sys)
State-space model with 2 outputs, 1 inputs, and 3 states.

Получившаяся модель имеет порядок три, который является минимальным количеством состояний, должен был представлять H (s). Чтобы видеть это количество состояний, осуществите рефакторинг H (s) как продукт системы первого порядка и системы второго порядка.

H(s)=[1s+2001][s+1s2+s+1s2+3s2+s+1]

Явная реализация модели в пространстве состояний дескриптора

Создайте модель в пространстве состояний дескриптора (EI).

a = [2 -4; 4 2];
b = [-1; 0.5];
c = [-0.5, -2];
d = [-1];
e = [1 0; -3 0.5];
sysd = dss(a,b,c,d,e);

Вычислите явную реализацию системы (E = I).

syse = ss(sysd,'explicit')
syse =
 
  A = 
        x1   x2
   x1    2   -4
   x2   20  -20
 
  B = 
       u1
   x1  -1
   x2  -5
 
  C = 
         x1    x2
   y1  -0.5    -2
 
  D = 
       u1
   y1  -1
 
Continuous-time state-space model.

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

bodeplot(sysd,syse,'g--')

Создайте модель в пространстве состояний и с фиксированным и с настраиваемые параметры

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

A=[1a+b0ab],B=[-3.01.5],C=[0.30],D=0,

где a и b являются настраиваемыми параметрами, начальными значениями которых является -1 и 3, соответственно.

Создайте настраиваемые параметры с помощью realp.

a = realp('a',-1);
b = realp('b',3);

Задайте обобщенную матрицу с помощью алгебраических выражений a и b.

A = [1 a+b;0 a*b];

A является обобщенной матрицей, свойство Blocks которой содержит a и b. Начальным значением A является [1 2;0 -3] от начальных значений a и b.

Создайте матрицы пространства состояний фиксированного значения.

B = [-3.0;1.5];
C = [0.3 0];
D = 0;

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

sys = ss(A,B,C,D)
sys =

  Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks:
    a: Scalar parameter, 2 occurrences.
    b: Scalar parameter, 2 occurrences.

Type "ss(sys)" to see the current value, "get(sys)" to see all properties, and "sys.Blocks" to interact with the blocks.

sys является обобщенной моделью LTI (genss) с настраиваемыми параметрами a и b. Подтвердите, что свойство A sys хранится как обобщенная матрица.

sys.A
ans =

  Generalized matrix with 2 rows, 2 columns, and the following blocks:
    a: Scalar parameter, 2 occurrences.
    b: Scalar parameter, 2 occurrences.

Type "double(ans)" to see the current value, "get(ans)" to see all properties, and "ans.Blocks" to interact with the blocks.

Извлеките компоненты от идентифицированной модели в пространстве состояний

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

load icEngine
z = iddata(y,u,0.04);
sys = ssest(z,3);

sysMeas = ss(sys,'measured')
sysNoise = ss(sys,'noise')

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

Алгоритмы

Для TF к преобразованию модели SS ss(sys_tf) возвращает измененную версию управляемой канонической формы. Это использует алгоритм, подобный tf2ss, но дальнейшим перешкалам вектор состояния, чтобы сжать числовую область значений в матричном A состояния и улучшить численные данные в последующих вычислениях.

Для ZPK к преобразованию SS ss(sys_zpk) использует прямую форму II структур, как задано в текстах обработки сигналов. Смотрите Обработку сигналов Дискретного времени Оппенхеймом и Шафером для деталей.

Например, в следующем коде, A и sys.A отличаются диагональным преобразованием состояния:

n=[1 1];
d=[1 1 10];
[A,B,C,D]=tf2ss(n,d);
sys=ss(tf(n,d));
A

A =

    -1   -10
     1     0

sys.A

ans =
    -1    -5
     2     0

Для получения дополнительной информации смотрите balance.

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