Simulate nonlinear ODE model
YS = sim(NLSYS,DATA)
YS = sim(NLSYS,DATA,'Noise');
YS = sim(NLSYS,DATA,X0INIT);
YS = sim(NLSYS,DATA,'Noise',XOINIT);
YS = sim(NLSYS,DATA,'Noise','InitialState',X0INIT);
[YS, YSD, XFINAL] = sim(NLSYS,DATA,'Noise','InitialState',X0INIT);
YS = sim(NLSYS,DATA)
simulates the output
of an idnlgrey
model.
YS = sim(NLSYS,DATA,'Noise');
simulates
the model with Gaussian noise added to YS
.
YS = sim(NLSYS,DATA,X0INIT);
simulates
the model with the specified initial states.
YS = sim(NLSYS,DATA,'Noise',XOINIT);
simulates
the model with the specified initial states and with Gaussian noise
added.
YS = sim(NLSYS,DATA,'Noise','InitialState',X0INIT);
simulates
the model with the specified initial states.
[YS, YSD, XFINAL] = sim(NLSYS,DATA,'Noise','InitialState',X0INIT);
performs simulation starting with the specified initial states and
with Gaussian noise added, and returns the final states of the model
after the simulation is completed.
To simulate the model with user-defined noise, set the input DATA
= [UIN E]
, where UIN
is the input signal
and E
is the noise signal. UIN
and E
must
both be one of the following:
iddata
objects: E
stores
the noise signals as inputs, where the number of inputs matches the
number of model outputs.
Matrices: E
has as many columns
as there are noise signals, corresponding to the number of model outputs.
NLSYS
: idnlgrey
model
object.
DATA
: Input-noise data [U
E]
. If E
is omitted and 'Noise'
is
not given as an input argument, then a noise-free simulation is obtained.
If E
is omitted and 'Noise'
is
given as an input argument, then Gaussian noise created by randn(size(YS))*sqrtm(NLSYS.NoiseVariance)
will
be added to YS
. If both E
and 'Noise'
are
given, then E
specifies the noise to add to YS
.
For time-continuous idnlgrey
objects, DATA
passed
as a matrix will lead to that the data sample interval, Ts
,
is set to one.
X0INIT
: Initial states. Can have
the following values:
'zero'
: Zero initial state x(0)
with all states fixed (nlsys.InitialStates.Fixed is thus ignored).
'fixed'
(default): Struct array
(NLSYS.InitialState
) determines the values of the
model initial states and all states are fixed. (NLSYS.InitialStates.Fixed
is
ignored). Same as 'model'
.
vector/matrix: Column vector of initial state values.
For multiple experiment DATA
, X0INIT
may
be a matrix whose columns give different initial states for each experiment.
All initial states are kept fixed (nlsys.InitialStates.Fixed
is
thus ignored).
struct array : Nx
-by-1 structure
array with fields:
Name
: Name of the state (a string).
Unit
: Unit of the state (a string).
Value
: Value of the states (a finite
real 1-by-Ne
vector, where Ne
is
the number of experiments.)
Minimum
: Minimum values of the
states (a real 1-by-Ne
vector or a real scalar,
in which case all initial states have the same minimum value).
Maximum
: Maximum values of the
states (a real 1-by-Ne
vector or a real scalar,
in which case all initial states have the same maximum value).
Fixed
: True
(or
a 1-by-Ne vector of True
values). Any false value
is ignored.
YS
: Simulated output. If DATA
is
an iddata
object, then YS
will
also be an iddata
object. Otherwise, YS
will
be a matrix where the k
:th output is found in the k
:th
column of YS
. If DATA
is a multiple-experiment iddata
object,
then YS
will be a multiple experiment object as
well.
YSD
: Empty vector ([]
).
XFINAL
: Final states computed.
In the single experiment case it is a column vector of length Nx
.
For multi-experiment data, XFINAL
is an Nx
-by-Ne
matrix
with the i
th column specifying the initial state
of experiment i
.
Note:
If |
In this example you simulate an idnlgrey
model
for a data set z
. This example uses the nlgr
model
created in idnlgreydemo2
.
Load the data set and create an idnlgrey
model.
load twotankdata;
Estimate the idnlgrey
model.
% Specify file. FileName = 'twotanks_c'; % Specify model orders [ny nu nx]. Order = [1 1 2]; % Specify initial parameters. Parameters = {0.5; 0.0035; 0.019; ... 9.81; 0.25; 0.016}; % Specify initial states. InitialStates = [0; 0.1]; Ts = 0; nlgr = idnlgrey(FileName, Order, Parameters, ... InitialStates, Ts, ... 'Name', 'Two tanks');
Create an iddata
object z
from
data z
(from twotankdata.mat
).
z = iddata([], u, 0.2, 'Name', 'Two tanks');
Simulate the model using the input signal from the
data z
.
sim(nlgr,z)
findstates
| pe
| pem
| predict