Примените Начальные условия когда Симуляция Идентифицированные Линейные Модели

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

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

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

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)

Отобразите первую выходную выборку для каждого набора данных.

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

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

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

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

ic представляет ICS только для набора данных оценки. Если вы хотите запустить симуляцию с помощью входных параметров валидации и сравнить результаты с валидацией выход, необходимо получить ICS для набора данных валидации. Для этого используйте compare. Можно использовать compare оценить ICS для любой комбинации данных об измерении и модели.

[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

Отобразите AC, и X0 свойства 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')

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

Примените ICS к симуляции конвертированной модели

Можно применить ICS, когда вы преобразуете свою модель в другую форму.

Преобразуйте 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')

sys_tf и sys_poly ответы кажутся идентичными.

Примените ICS к симуляции модели в пространстве состояний

Модели в пространстве состояний могут использовать начальные условия, представленные или одним числовым вектором начального состояния или 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 получить ICS, соответствующий 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 объект.

Извлеките и отобразите AC, и 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

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 объекты.

Смотрите также

| | | | | | |

Похожие темы