ssest
Estimate state-space model using time-domain or frequency-domain data
Syntax
Description
Estimate a State-Space Model
estimates a continuous-time state-space model sys
= ssest(data
,nx
)sys
of order
nx
, using data data
that can be in the time
domain or the frequency domain. sys
is a model of the following form:
A, B, C,
D, and K are state-space matrices.
u(t) is the input,
y(t) is the output,
e(t) is the disturbance, and
x(t) is the vector of nx
states.
All entries of A, B, C, and
K are free estimable parameters by default. D is
fixed to zero by default, meaning that there is no feedthrough, except for static systems
(nx = 0
).
incorporates additional options specified by one or more name-value pair arguments. For
example, estimate a discrete-time model by specifying the sample time
sys
= ssest(data
,nx
,Name,Value
)'Ts'
name-value pair argument. Use the 'Form'
,
'Feedthrough'
, and 'DisturbanceModel'
name-value pair arguments to modify the default behavior of the A,
B, C, D, and
K matrices.
Configure Initial Parameters
Examples
State-Space Model
Estimate a state-space model and compare its response with the measured output.
Load the input-output data, which is stored in an iddata
object.
load iddata1 z1
Estimate a fourth-order state-space model.
nx = 4; sys = ssest(z1,nx);
Compare the simulated model response with the measured output.
compare(z1,sys)
The plot shows that the fit percentage between the simulated model and the estimation data is greater than 70%.
You can view more information about the estimation by exploring the idss
property sys.Report
.
sys.Report
ans = Status: 'Estimated using SSEST with prediction focus' Method: 'SSEST' InitialState: 'zero' N4Weight: 'CVA' N4Horizon: [6 10 10] Fit: [1x1 struct] Parameters: [1x1 struct] OptionsUsed: [1x1 idoptions.ssest] RandState: [] DataUsed: [1x1 struct] Termination: [1x1 struct]
For example, find out more information about the termination conditions.
sys.Report.Termination
ans = struct with fields:
WhyStop: 'No improvement along the search direction with line search.'
Iterations: 7
FirstOrderOptimality: 85.9759
FcnCount: 123
UpdateNorm: 9.7655
LastImprovement: 0
The report includes information on the number of iterations and the reason the estimation stopped iterating.
Determine Optimal Estimated Model Order
Load the input-output data z1
, which is stored in an
iddata
object. This is the same data used to estimate a
fourth-order model in State-Space Model.
load iddata1 z1
Determine the optimal model order by specifying argument nx
as a
range from 1:10
.
nx = 1:10; sys = ssest(z1,nx);
An automatically generated plot shows the Hankel singular values for models of the
orders specified by nx
.
States with relatively small Hankel singular values can be safely discarded. The
suggested default order choice is 2
.
Select the model order in the Chosen Order list and click Apply.
Identify State-Space Model with Input Delay
Load time-domain system response data.
load iddata7 z7;
Identify a fourth-order state-space model of the data. Specify a known delay of 2
seconds for the first input and 0
seconds for the second input.
nx = 4;
sys = ssest(z7(1:300),nx,'InputDelay',[2;0]);
Modify Form, Feedthrough, and Disturbance-Model Matrices
Modify the canonical form of the A, B, and C matrices, include a feedthrough term in the D matrix, and eliminate disturbance-model estimation in the K matrix.
Load input-output data and estimate a fourth-order system using the ssest
default options.
load iddata1 z1 sys1 = ssest(z1,4);
Specify the companion form and compare the A
matrix with the default A
matrix.
sys2 = ssest(z1,4,'Form','companion'); A1 = sys1.A
A1 = 4×4
-0.5155 -3.8483 0.6657 -0.2666
5.8665 -2.7285 1.0649 -1.4694
-0.4487 0.9308 -0.6235 18.8148
-0.4192 0.5595 -16.0688 0.5399
A2 = sys2.A
A2 = 4×4
103 ×
0 0 0 -7.1122
0.0010 0 0 -0.9547
0 0.0010 0 -0.3263
0 0 0.0010 -0.0033
Include a feedthrough term and compare D
matrices.
sys3 = ssest(z1,4,'Feedthrough',1);
D1 = sys1.D
D1 = 0
D3 = sys3.D
D3 = 0.0339
Eliminate disturbance modeling and compare K
matrices.
sys4 = ssest(z1,4,'DisturbanceModel','none'); K1 = sys1.K
K1 = 4×1
0.0520
0.0973
0.0151
0.0270
K4 = sys4.K
K4 = 4×1
0
0
0
0
Estimate Initial States as Independent Parameters
Specify ssest
estimate initial states as independent estimation parameters.
ssest
can handle initial states using one of several methods. By default, ssest
chooses the method automatically based on your estimation data. You can choose the method yourself by modifying the option set using ssestOptions
.
Load the input-output data z1
and estimate a second-order state-space model sys
using the default options. Use the syntax that returns initial states x0
.
load iddata1 z1 [sys,x0] = ssest(z1,2); x0
x0 = 2×1
0
0
By default, the estimation is performed using the 'auto'
setting for InitialState
. Find out which method ssest
applied by reviewing the value of InitialState
in sys.Repor
t.
sys.Report.InitialState
ans = 'zero'
The software applied the 'zero'
method, meaning that the software set the initial states to zero instead of estimating them. This selection is consistent with the 0
values returned for x0
.
Specify that ssest
estimate the initial states instead as independent parameters using the 'estimate'
setting. Use ssestOptions
to create a modified option set and specify that option set to estimate a new model.
opt = ssestOptions('InitialState','estimate'); [sys1,x0] = ssest(z1,2,opt); x0
x0 = 2×1
0.0068
0.0052
x0
now has estimated parameters with nonzero values.
Estimate State-Space Model Using Regularization
Obtain a regularized fifth-order state-space model for a second-order system from a narrow bandwidth signal.
Load estimation data.
load regularizationExampleData eData;
Create the transfer function model used for generating the estimation data (true system).
trueSys = idtf([0.02008 0.04017 0.02008],[1 -1.561 0.6414],1);
Estimate an unregularized state-space model.
opt = ssestOptions('SearchMethod','lm'); m = ssest(eData,5,'form','modal','DisturbanceModel','none','Ts',eData.Ts,opt);
Estimate a regularized state-space model.
opt.Regularization.Lambda = 10; mr = ssest(eData,5,'form','modal','DisturbanceModel','none','Ts',eData.Ts,opt);
Compare the model outputs with the estimation data.
compare(eData,m,mr);
Compare the model impulse responses.
impulse(trueSys,m,mr,50); legend('trueSys','m','mr');
Estimate Partially Known State-Space Model Using Structured Estimation
Estimate a state-space model of measured input-output data. Configure the parameter constraints and initial values for estimation using a state-space model.
Create an idss
model to specify the initial parameterization for estimation.
A = blkdiag([-0.1 0.4; -0.4 -0.1],[-1 5; -5 -1]); B = [1; zeros(3,1)]; C = [1 1 1 1]; D = 0; K = zeros(4,1); x0 = [0.1 0.1 0.1 0.1]; Ts = 0; init_sys = idss(A,B,C,D,K,x0,Ts);
Setting all entries of K
to 0
creates an idss
model with no state disturbance element.
Use the Structure
property to fix the values of some of the model parameters. Configure the model so that B
and K
are fixed, and only the nonzero entries of A
are estimable.
init_sys.Structure.A.Free = (A~=0); init_sys.Structure.B.Free = false; init_sys.Structure.K.Free = false;
The entries in init_sys.Structure.A.Free
determine whether the corresponding entries in init_sys.A
are free (true
) or fixed (false
).
Load the measured data and estimate a state-space model using the parameter constraints and initial values specified by init_sys
.
load iddata2 z2; sys = ssest(z2,init_sys);
The estimated parameters of sys
satisfy the constraints specified by init_sys
.
Input Arguments
data
— Estimation data
iddata
object | frd
object | idfrd
object
Estimation data, specified as an iddata
object, an frd
object, or an idfrd
object.
For time-domain estimation, data
must be an iddata
object containing the input and output signal values.
For frequency-domain estimation, data
can be one of the following:
Estimation data must be uniformly sampled. By default, the software sets the sample time of the model to the sample time of the estimation data.
For multiexperiment data, the sample times and intersample behavior of all the experiments must match.
The domain of your data determines the type of model you can estimate.
Time-domain or discrete-time frequency-domain data — Continuous-time and discrete-time models
Continuous-time frequency-domain data — Continuous-time models only
nx
— Order of estimated model
1:10
(default) | positive integer scalar | positive integer vector | 0
Order of the estimated model, specified as a nonnegative integer or as a vector containing a range of positive integers.
If you already know what order you want your estimated model to have, specify
nx
as a scalar.If you want to compare a range of potential orders to choose the most effective order for your estimated model, specify the range in
nx
.ssest
creates a Hankel singular-value plot that shows the relative energy contributions of each state in the system. States with relatively small Hankel singular values contribute little to the accuracy of the model and can be discarded with little impact. The index of the highest state you retain is the model order. The plot window includes a suggestion for the order to use. You can accept this suggestion or enter a different order. For an example, see Determine Optimal Estimated Model Order.If you do not specify
nx
, or if you specifynx
asbest
, the software automatically choosesnx
from the range1:10
.If you are identifying a static system, set
nx
to0
.
opt
— Estimation options
ssestOptions
option set
Estimation options, specified as an ssestOptions
option set. Options specified by opt
include:
Estimation objective
Handling of initial conditions
Regularization
Numerical search method used for estimation
For examples showing how to use opt
, see Estimate Initial States as Independent Parameters and Estimate State-Space Model Using Regularization.
init_sys
— Linear system that configures initial parameterization of sys
idss
model | linear model | structure
Linear system that configures the initial parameterization of
sys
, specified as an idss
model or as a structure. You obtain init_sys
by
either performing an estimation using measured data or by direct construction.
If init_sys
is an idss
model,
ssest
uses the parameter values of init_sys
as the initial guess for estimating sys
. For information on how to
specify idss
, see Estimate State-Space Models with Structured Parameterization.
ssest
honors constraints on the parameters of
init_sys
, such as fixed coefficients and minimum/maximum bounds.
Use the Structure
property of init_sys
to
configure initial parameter values and constraints for the A,
B, C, D, and
K matrices. For example:
To specify an initial guess for the A matrix of
init_sys
, setinit_sys.Structure.A.Value
as the initial guess.To specify constraints for the B matrix of
init_sys
:Set
init_sys.Structure.B.Minimum
to the minimum B matrix valueSet
init_sys.Structure.B.Maximum
to the maximum B matrix valueSet
init_sys.Structure.B.Free
to indicate if entries of the B matrix are free parameters for estimation
To set more complex constraints, such as interdependence of coefficients, use grey-box estimation using
greyest
andidgrey
.
You must assign finite initial values for all matrix parameters.
If
init_sys
is not a state-space (idss
) model, the software first converts init_sys
to an
idss
model. ssest
uses the parameters of the
resulting model as the initial guess for estimation.
If you do not specify opt
and init_sys
was
obtained by estimation, then the software uses estimation options from
init_sys.Report.OptionsUsed
.
For an example, see Estimate Partially Known State-Space Model Using Structured Estimation.
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example:
sys = ssest(data,nx,'Ts',0.1)
Ts
— Sample time of estimated model
0
(continuous time) (default) | sample time of data (data.Ts
) | positive scalar
Sample time of the estimated model, specified as the comma-separated pair consisting of 'Ts'
and either 0
or a positive scalar.
For continuous-time models, specify
'Ts'
as0
.For discrete-time models, specify
'Ts'
as the data sample time in the units stored in theTimeUnit
property.
InputDelay
— Input delays
0
(default) | scalar | vector
Input delay for each input channel, specified as the comma-separated pair
consisting of 'InputDelay'
and a numeric vector.
For continuous-time models, specify
'InputDelay'
in the time units stored in theTimeUnit
property.For discrete-time models, specify
'InputDelay'
in integer multiples of the sample timeTs
. For example, setting'InputDelay'
to3
specifies a delay of three sampling periods.
For a system with Nu inputs, set
InputDelay
to an
Nu-by-1 vector. Each entry of this vector is
a numerical value that represents the input delay for the corresponding input channel.
For an example, see Identify State-Space Model with Input Delay.
To apply the same delay to all channels, specify InputDelay
as a scalar.
Form
— Type of canonical form
'free'
(default) | 'modal'
| 'companion'
| 'canonical'
Type of canonical form of sys
, specified as the
comma-separated pair consisting of 'Form'
and one of the following values:
'free'
— All entries of the matrices A, B, C, D, and K are treated as free.'modal'
— Obtainsys
in modal form.'companion'
— Obtainsys
in companion form.'canonical'
— Obtainsys
in the observability canonical form.
For definitions of the canonical forms, see Canonical State-Space Realizations.
For more information, see Estimate State-Space Models with Canonical Parameterization. For an example, see Modify Form, Feedthrough, and Disturbance-Model Matrices.
Feedthrough
— Direct feedthrough from input to output
0
(default) | 1
| logical vector
Direct feedthrough from input to output, specified as the comma-separated pair
consisting of 'Feedthrough'
and a logical vector of length
Nu, where
Nu is the number of inputs. If you
specify Feedthrough
as a logical scalar, that value is applied to
all the inputs. For static systems, the software always assumes
'Feedthrough'
is 1
.
For an example, see Modify Form, Feedthrough, and Disturbance-Model Matrices.
DisturbanceModel
— Option to estimate time-domain noise component parameters
'estimate'
(default) | 'none'
Option to estimate time-domain noise component parameters in the K matrix,
specified as the comma-separated pair consisting of
'DisturbanceModel'
and one of the following values:
'estimate'
— Estimate the noise component. The K matrix is treated as a free parameter.'none'
— Do not estimate the noise component. The elements of the K matrix are fixed at zero.
For frequency-domain data, the software assumes that
'DisturbanceModel'
is 'none'
.
For an example, see Modify Form, Feedthrough, and Disturbance-Model Matrices.
Output Arguments
sys
— Identified state-space model
idss
model
Identified state-space model, returned as an idss
model. This model is created using the specified model orders, delays,
and estimation options.
Information about the estimation results and options used is stored in the
Report
property of the model. Report
has the
following fields.
Report Field | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status | Summary of the model status, which indicates whether the model was created by construction or obtained by estimation. | ||||||||||||||||||
Method | Estimation command used. | ||||||||||||||||||
InitialState | How initial states were handled during estimation, returned as one of the following values:
This field is especially useful when the
| ||||||||||||||||||
N4Weight | Weighting scheme used for singular-value decomposition by the N4SID algorithm, returned as one of the following values:
This option is especially useful when the
| ||||||||||||||||||
N4Horizon | Forward and backward prediction horizons used by the N4SID algorithm,
returned as a row vector with three elements —
| ||||||||||||||||||
Fit | Quantitative assessment of the estimation, returned as a structure. See Loss Function and Model Quality Metrics for more information on these quality metrics. The structure has the following fields:
| ||||||||||||||||||
Parameters | Estimated values of model parameters. | ||||||||||||||||||
OptionsUsed | Option set used for estimation. If no custom options were configured,
this is a set of default options. See | ||||||||||||||||||
RandState | State of the random number stream at the start of estimation. Empty,
| ||||||||||||||||||
DataUsed | Attributes of the data used for estimation. Structure with the following fields:
| ||||||||||||||||||
Termination | Termination conditions for the iterative search used for prediction error minimization, returned as a structure with the following fields:
For estimation methods that do not require numerical search optimization,
the |
For more information on using Report
, see Estimation Report.
x0
— Initial states computed during estimation
column vector | matrix
Initial states computed during the estimation, returned as an array containing a column vector corresponding to each experiment.
This array is also stored in the Parameters
field of the model
Report
property.
For an example, see Estimate Initial States as Independent Parameters.
Algorithms
ssest
initializes the parameter estimates using either a noniterative
subspace approach or an iterative rational function estimation approach. It then refines the
parameter values using the prediction error minimization approach. For more information, see
pem
and ssestOptions
.
References
[1] Ljung, L. System Identification: Theory for the User, Second Edition. Upper Saddle River, NJ: Prentice Hall PTR, 1999.
Extended Capabilities
Automatic Parallel Support
Accelerate code by automatically running computation in parallel using Parallel Computing Toolbox™.
Parallel computing support is available for estimation using the
lsqnonlin
search method (requires Optimization Toolbox™). To enable parallel computing, use ssestOptions
, set SearchMethod
to
'lsqnonlin'
, and set
SearchOptions.Advanced.UseParallel
to true
.
For example:
opt = ssestOptions;
opt.SearchMethod = 'lsqnonlin';
opt.SearchOptions.Advanced.UseParallel = true;
Version History
See Also
Functions
ssestOptions
|ssregest
|idss
|n4sid
|tfest
|procest
|polyest
|iddata
|idfrd
|canon
|idgrey
|pem
Live Editor Tasks
Topics
- Estimate State-Space Models at the Command Line
- Estimate State-Space Models with Free-Parameterization
- Estimate State-Space Models with Canonical Parameterization
- Estimate State-Space Models with Structured Parameterization
- Use State-Space Estimation to Reduce Model Order
- What Are State-Space Models?
- Supported State-Space Parameterizations
- State-Space Model Estimation Methods
- Regularized Estimates of Model Parameters
- Estimating Models Using Frequency-Domain Data
Ouvrir l'exemple
Vous possédez une version modifiée de cet exemple. Souhaitez-vous ouvrir cet exemple avec vos modifications ?
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)