В этом примере показан рабочий процесс получения и использования предполагаемых начальных условий при моделировании моделей для проверки производительности модели на основе измеренных данных.
Используйте начальные условия (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