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- Nx действительный - или матрица с комплексным знаком.

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

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

  • D Ny- 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) модель, когда один или несколько матриц ABCD настраиваемый 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

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

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

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

Примеры

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

Создайте модель в пространстве состояний с шагом расчета 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');

Количество состояния и входных имен должно быть сопоставимо с размерностями ABC, и 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