Применение начальных условий при симуляции идентифицированных линейных моделей

В этом примере показан рабочий процесс получения и использования предполагаемых начальных условий при моделировании моделей для проверки производительности модели на основе измеренных данных.

Используйте начальные условия (IC), когда вы хотите симулировать модель в порядок, чтобы подтвердить производительность модели путем сравнения симулированного отклика с измеренными данными. Если ваши данные измерения соответствуют системе, которая не начинается в покое, симуляция, которое принимает начальную точку покоя, приводит к несоответствию. Моделируемые и измеренные отклики не согласуются в начале симуляции.

Для моделей пространства состояний вектора начального состояния достаточно, чтобы описать начальные условия. Для других моделей LTI initialCondition объект позволяет вам представлять IC в виде свободной реакции вашей модели на начальные условия. Это представление находится в форме пространства состояний, как показано в следующем уравнении:

G(s)=C(sI-A)-1X0

Вот, G(s)является свободным ответом, который initialCondition инкапсулирует.A и C являются ли A и C матрицы формы пространство состояний вашей модели. X0 - соответствующий вектор начального состояния. Свободный ответ не включает B и D матрицы, потому что свободная характеристика IC не зависит от входных сигналов. Хотя и initialCondition объект упаковывает форму пространства состояний, можно использовать информацию для моделирования свободного отклика для любой системы LTI. Программное обеспечение симуляции вычисляет свободные и принудительные отклики отдельно, а затем добавляет их вместе, чтобы получить полный ответ.

Подготовка данных

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

load iddata2 z2
z2e = z2(10:210);
z2v = z2(210:400);
plot(z2e,z2v)

Figure contains 2 axes. Axes 1 with title y1 contains 2 objects of type line. These objects represent z2e, z2v. Axes 2 with title u1 contains 2 objects of type line. These objects represent 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')

Figure contains 2 axes. Axes 1 with title y1 contains 2 objects of type line. These objects represent Model Response, Output Data. Axes 2 with title u1 contains an object of type line. This object represents Output Data.

Моделируемые и измеренные отклики не согласуются в начале симуляции.

Включить 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')

Figure contains 2 axes. Axes 1 with title y1 contains 2 objects of type line. These objects represent Model Response, Output Data. Axes 2 with title u1 contains an object of type line. This object represents Output Data.

Отклики теперь более тесно согласуются в начале симуляции.

Получение IC для данных валидации

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')

Figure contains an axes. The axes with title y1 contains 2 objects of type line. These objects represent Model Response, Output Data.

Моделируемые и измеренные отклики хорошо согласуются в начале симуляции.

Применение IC к симуляции преобразованной модели

Можно применить ИС при преобразовании модели в другую форму.

Преобразование 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')

Figure contains an axes. The axes with title y1 contains 3 objects of type line. These objects represent idpoly Model Response, idtf Model Response, Output Data.

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')

Figure contains an axes. The axes with title y1 contains 2 objects of type line. These objects represent Model Response, Output Data.

Когда вы используете 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')

Figure contains an axes. The axes with title y1 contains 2 objects of type line. These objects represent Model Response, Output Data.

Преобразуйте вектор начального состояния пространства состояний в 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')

Figure contains an axes. The axes with title y1 contains 2 objects of type line. These objects represent Model Response, Output Data.

Использование построенных initialCondition ic_ss2 объекта вырабатывает аналогичный ответ на симулированные отклики, которые используют непосредственно оцененные initialCondition объекты.

См. также

| | | | | | |

Похожие темы