Этот пример показывает рабочий процесс для получения и использования предполагаемых начальных условий, когда вы симулируете модели, чтобы подтвердить производительность модели против результатов измерений.
Используйте начальные условия (ICS), когда это необходимо, чтобы симулировать модель для того, чтобы подтвердить производительность модели путем сравнения симулированного отклика с результатами измерений. Если ваши данные об измерении соответствуют системе, которая не запускается в покое, симуляция, которая принимает, покоящаяся стартовая точка приводит к несоответствию. Симулированный и измеренные отклики не соглашаются в начале симуляции.
Для моделей в пространстве состояний вектор начального состояния достаточен, чтобы описать начальные условия. Для других моделей LTI, initialCondition
объект позволяет вам представлять ICS в форме свободного ответа вашей модели к начальным условиям. Это представление находится в форме пространства состояний, как показано в следующем уравнении:
Здесь, свободный ответ что 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
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
представляет 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
Отобразите A
C
, и 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, когда вы преобразуете свою модель в другую форму.
Преобразуйте 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
ответы кажутся идентичными.
Модели в пространстве состояний могут использовать начальные условия, представленные или одним числовым вектором начального состояния или 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
объект.
Извлеките и отобразите 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
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
объекты.
initialCondition
| compare
| ssest
| tfest
| idss
| idpoly
| simOptions
| sim