В этом примере показан рабочий процесс получения и использования предполагаемых начальных условий при моделировании моделей для проверки производительности модели на основе измеренных данных.
Используйте начальные условия (IC), когда вы хотите симулировать модель в порядок, чтобы подтвердить производительность модели путем сравнения симулированного отклика с измеренными данными. Если ваши данные измерения соответствуют системе, которая не начинается в покое, симуляция, которое принимает начальную точку покоя, приводит к несоответствию. Моделируемые и измеренные отклики не согласуются в начале симуляции.
Для моделей пространства состояний вектора начального состояния достаточно, чтобы описать начальные условия. Для других моделей LTI initialCondition объект позволяет вам представлять IC в виде свободной реакции вашей модели на начальные условия. Это представление находится в форме пространства состояний, как показано в следующем уравнении:
Вот, является свободным ответом, который initialCondition инкапсулирует. и являются ли A и C матрицы формы пространство состояний вашей модели. - соответствующий вектор начального состояния. Свободный ответ не включает B и D матрицы, потому что свободная характеристика IC не зависит от входных сигналов. Хотя и initialCondition объект упаковывает форму пространства состояний, можно использовать информацию для моделирования свободного отклика для любой системы LTI. Программное обеспечение симуляции вычисляет свободные и принудительные отклики отдельно, а затем добавляет их вместе, чтобы получить полный ответ.
Загрузите данные и разделите их на наборы данных оценки и валидации. В данном примере разделение происходит, когда выходные данные имеют заметно ненулевую начальную точку.
load iddata2 z2 z2e = z2(10:210); z2v = z2(210:400); plot(z2e,z2v)

Отобразите первую выходную выборку для каждого набора данных.
z2e.y(1)
ans = -5.9588
z2v.y(1)
ans = -9.2141
Используя данные оценки, оцените модель передаточной функции второго порядка и верните начальное условие ic. Отобразите ic.
np = 2; nz = 1; [sys_tf,ic] = tfest(z2e,np,nz); ic
ic =
initialCondition with properties:
A: [2x2 double]
X0: [2x1 double]
C: [-1.6158 5.1969]
Ts: 0
ic представляет свободную реакцию модели передаточной функции в форме пространства состояний на начальное условие.
A = ic.A
A = 2×2
-3.4145 -5.6635
4.0000 0
C = ic.C
C = 1×2
-1.6158 5.1969
The X0 свойство содержит начальный вектор состояния.
X0 = ic.X0
X0 = 2×1
-0.5053
-1.2941
Симулируйте модель. Во-первых, в качестве ссылки моделируйте модель, не включая ic. Постройте график симулированного отклика с данными оценки.
y_no_ic = sim(sys_tf,z2e); plot(y_no_ic,z2e) legend('Model Response','Output Data') title('Transfer Function Model - No IC Specification')

Моделируемые и измеренные отклики не согласуются в начале симуляции.
Включить ic. Для этого сначала инициализируйте opt к набору опций simOptions. Задайте ic как 'InitialCondition' настройка. Симулируйте модель и постройте график результатов.
opt = simOptions; opt.InitialCondition = ic; y_ic = sim(sys_tf,z2e,opt); plot(y_ic,z2e) legend('Model Response','Output Data') title('Transfer Function Model - ICs Specified')

Отклики теперь более тесно согласуются в начале симуляции.
ic представляет IC только для набора данных оценки. Если вы хотите запустить симуляцию с помощью входов валидации и сравнить результаты с выходами валидации, вы должны получить IC для набора данных валидации. Для этого используйте compare. Можно использовать compare для оценки IC для любой комбинации модели и данных измерений.
[yv,fitv,icv] = compare(z2v,sys_tf); icv
icv =
initialCondition with properties:
A: [2x2 double]
X0: [2x1 double]
C: [-1.6158 5.1969]
Ts: 0
Отобразите A, C, и X 0 свойства icv.
Av = icv.A
Av = 2×2
-3.4145 -5.6635
4.0000 0
Cv = icv.C
Cv = 1×2
-1.6158 5.1969
X0v = icv.X0
X0v = 2×1
0.4512
-1.5068
Для этого случая, A и C матрицы, представляющие модель свободного отклика, идентичны ic.A и ic.C значения в исходной оценке. Однако вектор начального состояния X0v отличается от ic.X0.
Задайте icv как 'InitialCondition' установка в opt и моделируйте модель с помощью данных валидации. Постройте график моделируемых и измеренных откликов.
opt.InitialCondition = icv; y_ic = sim(sys_tf,z2v,opt); plot(y_ic(:,:,[]),z2v(:,:,[])) legend('Model Response','Output Data') title('Transfer Function Model Response For Validation Data')

Моделируемые и измеренные отклики хорошо согласуются в начале симуляции.
Можно применить ИС при преобразовании модели в другую форму.
Преобразование sys_tf в idpoly модель. Симулируйте преобразованную модель, сохраняя текущую SimOptions 'InitialCondition' установка, icv, в opt.
sys_poly = idpoly(sys_tf); y_poly = sim(sys_poly,z2v,opt); plot(y_poly(:,:,[]),y_ic(:,:,[]),z2v(:,:,[])) legend('idpoly Model Response','idtf Model Response','Output Data') title('Converted Polynomial Model')

The sys_tf и sys_poly ответы кажутся идентичными.
Модели в пространстве состояний могут использовать начальные условия, представленные либо одним числовым вектором начального состояния, либо initialCondition объект.
Когда вы преобразуете sys_tf в idss модель, можно снова использовать icv путем сохранения icv установка в opt.
sys_ss = idss(sys_tf); y_ss = sim(sys_ss,z2v,opt); plot(y_ss(:,:,[]),z2v(:,:,[])) legend('Model Response','Output Data') title('Converted State-Space Model')

Когда вы используете compare или функцию оценки пространства состояний, такую как ssestфункция возвращает начальный вектор состояния x0. Оцените модель пространства состояний sys_ss2 использование z2e и использовать compare для получения IC, соответствующих z2v.
sys_ss2 = ssest(z2e,2); [yvss,fitvss,x0] = compare(z2v,sys_ss2); x0
x0 = 2×1
-0.1061
0.0097
x0 является числовым вектором. Задайте x0 как 'InitialCondition' установка в opt и моделируйте ответ.
opt.InitialCondition = x0; y_ss2 = sim(sys_ss2,z2v,opt); plot(y_ss2(:,:,[]),z2v(:,:,[])) legend('Model Response','Output Data') title('State-Space Model Simulated with Initial State Vector')

initialCondition объектЕсли ваша исходная модель является моделью пространства состояний, и вы хотите преобразовать модель в модель полинома или передаточной функции и применить те же начальные условия, необходимо преобразовать вектор начального состояния в initialCondition объект.
Извлечение и отображение A, C, и Ts свойства из sys_ss2.
As = sys_ss2.A
As = 2×2
-1.7643 -3.7716
5.2918 -1.7327
Cs = sys_ss2.C
Cs = 1×2
82.9765 25.5146
Tss = sys_ss2.Ts
Tss = 0
The A и C матрицы, которые оцениваются с помощью ssest имеют значения, отличные от A и C матрицы, рассчитанные в icv использование tfest. Существует бесконечно много представлений заданной линейной модели в пространстве состояний. Две пары матриц, наряду со связанными векторами начального состояния, эквивалентны и дают одинаковый свободный ответ.
Создайте initialCondition ic_ss2 объекта использование sys_ss2 свойства модели и вектор начального состояния x0 вы получили, когда использовали compare.
ic_ss2 = initialCondition(As,x0,Cs,Tss)
ic_ss2 =
initialCondition with properties:
A: [2x2 double]
X0: [2x1 double]
C: [82.9765 25.5146]
Ts: 0
Преобразование sys_ss2 в модель передаточной функции и моделируйте преобразованную модель используя ic_ss2 как 'InitialCondition' настройка.
sys_tf2 = idtf(sys_ss2); opt.InitialCondition = ic_ss2; y_tf2 = sim(sys_tf2,z2v,opt); plot(y_tf2(:,:,[]),z2v(:,:,[])) legend('Model Response','Output Data') title('Transfer Function Model Converted from State-Space Model')

Использование построенных initialCondition ic_ss2 объекта вырабатывает аналогичный ответ на симулированные отклики, которые используют непосредственно оцененные initialCondition объекты.
compare | idpoly | idss | initialCondition | sim | simOptions | ssest | tfest