Control System Toolbox™ Release Notes
Control System Toolbox™ Release Notes
Phone: 508-647-7000
R2022b
Create Plot Live Editor Task: Create linear analysis response plots
interactively and generate code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
R2022a
R2021b
iii
ss2ss: Similarity transformation is no longer supported for mechss models
...................................................... 3-4
stepinfo and lsiminfo: Response characteristics computation changes . . . . 3-4
R2021a
Model Reduction: Compute and plot Hankel singular values (HSV) using
balred . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
R2020b
iv Contents
R2020a
zgrid: Specify Sample Time to Plot True Frequencies on the Grid . . . . . . 6-3
R2019b
ngrid, sgrid, and zgrid: Specify target axes as Axes and UIAxes to create
apps in App Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2
R2019a
R2018b
v
R2018a
R2017b
vi Contents
R2017a
R2016b
MaxRadius Option for Tuning: Prevent poles and zeros from going to
infinity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2
R2016a
vii
Control System Tuner App and systune Command: Automatically tune
single-loop and multiloop control systems to meet design requirements
......................................................... 14-3
Passivity and Conic Sectors: Analyze and tune control systems for
passivity and other sector bounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-3
R2015b
pid2 and pidstd2 Model Objects: Represent, analyze, and use 2-DOF PID
controllers for control design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-2
2-DOF PID Controller Tuning: Automatically tune the gains of 2-DOF PID
controllers with PID Tuner app and pidtune command . . . . . . . . . . . . 15-2
Change in LPV System block default values for model delays . . . . . . . . . 15-3
R2015a
viii Contents
sisotool function renamed to controlSystemDesigner . . . . . . . . . . . . . . . 16-4
R2014b
R2014a
Redesigned PID Tuner app for improved PID tuning workflow . . . . . . . . 18-2
PID controller tuning using system identification to model the plant from
measured input-output data in the PID Tuner app (with System
Identification Toolbox) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-2
freqsep function for decomposing a linear system into fast dynamics and
slow dynamics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-2
R2013b
ix
Option to retain unconnected states when interconnecting models using
connect command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-2
R2013a
Transient behavior slider for PID Tuner, increasing control over reference
tracking and disturbance rejection performance . . . . . . . . . . . . . . . . . 20-2
R2012b
R2012a
x Contents
tzero Computes Invariant Zeros and Transmission Zeros . . . . . . . . . . . . 22-3
R2011b
R2011a
New Time and Frequency Units for Models and Response Plots . . . . . . . 24-2
R2010b
New Commands and GUI for Modeling and Tuning PID Controllers . . . 25-2
PID Controller Design with the New PID Tuner GUI . . . . . . . . . . . . . . . . 25-2
PID Controller Design with the New pidtune Command . . . . . . . . . . . . . 25-2
Modeling PID Controllers in Parallel Form or Standard Form . . . . . . . . . 25-2
xi
R2010a
R2009b
R2009a
R2008b
xii Contents
R2008a
R2007b
R2007a
R2006b
R2006a
xiii
Changes in the Representation of I/O Delays in State-Space Models . . . . 34-3
New Name Property for LTI Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34-3
New Commands and Operations for LTI Objects . . . . . . . . . . . . . . . . . . . 34-3
R14SP3
R14SP2
xiv Contents
1
R2022b
Version: 10.12
New Features
Bug Fixes
R2022b
Create Plot Live Editor Task: Create linear analysis response plots
interactively and generate code
You can now use the Create Plot Live Editor task to interactively create linear analysis response
plots for your dynamic system model. The task also automatically generates code that becomes part
of your live script.
For more information and an example, see the Create Plot Live Editor Task reference page.
• “Feedback Amplifier Design for Voltage-Mode Boost Converter” — This example illustrates tuning
the components of a power supply controller to control the output voltage of a boost converter
using loop-shape design and fixed-structure tuning methods. The workflow is demonstrated using
a type-III controller. You need a Mixed-Signal Blockset™ license to run this example.
• “Detect Replay Attacks in DC Microgrids Using Distributed Watermarking” — This example shows
how to use distributed watermarking to detect replay attacks in a cyber-physical system.
1-2
2
R2022a
Version: 10.11.1
New Features
Bug Fixes
Compatibility Considerations
R2022a
1 The measurement, specified as an N-element output measurement vector of the nonlinear system
at time step k, given the state vector at time step k. N is the number of measurements of the
system.
2 The measurement wrapping bounds, specified as an N-by-2 matrix where, the first column
provides the minimum measurement bound and the second column provides the maximum
measurement bound.
You can also enable measurement wrapping in the Extended Kalman Filter and Unscented Kalman
Filter blocks using the Has measurement wrapping check box.
2-2
For an example, see State Estimation with Wrapped Measurements Using Extended Kalman Filter.
The following plot options objects have been renamed for R2022a:
The default value of bdschur input argument CONDMAX is now 1e4. Previously, the default value was
1/sqrt(eps).
CONDMAX specifies an upper bound on the condition number of the transformation matrix T.
Increasing CONDMAX reduces the size of the eigenvalue clusters in the transformed model but also
decreases the accuracy of the transformation. The new default value balances the conditioning and
transformation accuracy. If you have code that relies on the default value of CONDMAX being 1/
sqrt(eps), update your code to explicitly set this input argument.
The default value of canon input argument condt is now 1e4. Previously, the default value was 1e8.
condt specifies an upper bound on the condition number of the transformation matrix T. Increasing
condt reduces the size of the eigenvalue clusters in the transformed model but also decreases the
accuracy of the transformation. The new default value balances the conditioning and transformation
accuracy. If you have code that relies on the default value of condt being 1e8, update your code to
explicitly set this input argument.
2-3
3
R2021b
Version: 10.11
New Features
Bug Fixes
Compatibility Considerations
R2021b
For bode, margin, sigma, passiveplot, and sectorplot, when you plot complex-coefficient
systems in:
• Log frequency scale, the plots show two branches, one for positive frequencies and one for
negative frequencies. The arrows indicate the direction of increasing frequency values for each
branch.
• Linear frequency scale, the plots show a single branch with a symmetric frequency range centered
at a frequency value of zero. If you specify a frequency range of [wmin,wmax] for your plot, the
frequency limits are set to [–wmax,wmax].
The nyquist plot now shows a contour comprised of both positive and negative frequencies. The
arrows indicate the direction of increasing frequency for each branch. For complex-coefficient
systems, the two branches are not symmetric. For real-coefficient systems, the negative branch is
obtained by symmetry. For an example, see Nyquist Plot of Model with Complex Coefficients
For complex-coefficient models, a nichols plot now shows a contour comprised of both positive and
negative frequencies. For real-coefficient models, the plot shows only positive frequencies, even when
complex-coefficient models are present. For an example, see Nichols Plot of Model with Complex
Coefficients.
To compute step-response characteristics when you have a nonzero initial value, use the following
syntax.
S = stepinfo(y,t,yfinal,yinit)
To compute linear response characteristics when you have a nonzero initial value, use the following
syntax.
3-2
S = lsiminfo(y,t,yfinal,yinit)
This command computes response characteristics from an array of linear response data y,
corresponding time vector t, steady-state value yfinal, and initial value yinit. For more
information, see lsiminfo.
Additionally, the output structures of stepinfo and lsiminfo now contain a TransientTime field.
Use this characteristic to measure how quickly the transients die off. This characteristic also applies
to any response, including responses with zero final values (impulse and initial).
Compatibility Considerations
As a result of these changes to stepinfo and lsiminfo, the computation of some response
characteristics has changed. For more information, see “stepinfo and lsiminfo: Response
characteristics computation changes” on page 3-4.
Support for opening SISO Design Tool sessions saved before release R2016a will be removed in
release R2021b.
If you have sessions saved before release R2016a, open and resave the session files using Control
System Designer in any release from R2016a through R2021a.
ss2ss now returns different transformation results for descriptor state-space models
Behavior change
ss2ss performs the similarity transformation x = Tx on the state vector x and produces the
equivalent state-space model sysT. For descriptor state-space models ss2ss now returns a different
transformation result.
Eẋ = Ax + Bu
y = Cx + Du,
ET −1ẋ = AT −1x + Bu
y = CT −1x + Du .
3-3
R2021b
Because of changes to stepinfo and lsiminfo, the computation of some response characteristics
has changed. Additionally, the settling time calculation is now based on how quickly the response gets
within a specified threshold of the final value.
The following table summarizes the changes to the fields of the structure returned by stepinfo.
The following table summarizes the changes to the fields of the structure returned by lsiminfo.
3-4
Additionally, the output structures of stepinfo and lsiminfo now contain a TransientTime field.
This characteristic contains the peak-error-based settling time calculation used in releases before
R2021b. Transient time is used to measure how quickly the transient dynamics die off.
Here:
These changes also apply to the characteristics of step, impulse, and initial plots. Additionally:
• For step plots, yinit is always assumed to be zero and yfinal is the steady-state value.
• For the step response, transient time and settling time tend to differ for models with feedthrough,
zeros at the origin, unstable zeros (undershoot), or large overshoot. They match for models with
no undershoot or feedthrough, and with less than 100% overshoot.
• For the step response of models with feedthrough, the new RiseTime value can differ because
y(1) is nonzero whereas yinit is zero by default. Before R2021b, the rise time computed was the
time it takes to go from 10% to 90% of the way from y(1) to yfinal, instead of yinit to yfinal now.
3-5
4
R2021a
Version: 10.10
New Features
Bug Fixes
Compatibility Considerations
R2021a
• ErrorBound — You can choose between absolute and relative error approximation. Previously,
you could only use absolute error approximation when performing model reduction. Relative error
approximation is useful when your original model has a very high or low gain in the region that is
important to your application. In such regions, absolute error approximations are not effective.
• Regularization — Use this option to choose the regularization level that ensures a well-defined
relative error at all frequencies.
Relative-error approximation is also available in the Model Reducer app. To use it, in the Balanced
Truncation tab, in the Error Bound drop-down list, select relative. You can also specify the
regularization value in the Regularization field inside the Options menu in the Balanced
Truncation tab.
Compatibility Considerations
balred and balredOptions replaces the hsvd and hsvdOptions commands to compute and plot
Hankel singular values and includes options that preserves roll-off characteristics from the original
model. The hsvd and hsvdOptions commands are not recommended. For more information, see the
Functionality being removed or changed section.
Compatibility Considerations
balred replaces hsvd to compute and plot Hankel singular values. The hsvd command is not
recommended. For more information, see the Functionality being removed or changed section.
4-2
inv and imp2exp: Implicit form returned for state-space models by
default
The inv and imp2exp functions now return the implicit form for ss, genss and uss (Robust Control
Toolbox) model objects, by default. When the inverse is proper, you can use inv(sys,'min') and B
= imp2exp(A,yidx,uidx,'min') to eliminate the extra states and obtain a model with as many
states as sys or A respectively.
Compatibility Considerations
If your code uses the inv and imp2exp commands with state-space models, then it may produce
results that are different from the results you obtained using previous versions.
You can also use the Update plots in real-time checkbox in the Control System Designer
Preferences dialog to enable or disable synchronous updates of the response plots while using
graphical tuning methods.
Disabling this option improves performance especially for multimodel control design.
4-3
R2021a
Compatibility Considerations
Numerical improvements to the algorithms used by modred, stabsep and modsep commands might
produce results that are different from the results you obtained using previous versions for descriptor
models.
The hsvd and hsvdOptions commands are not recommended. Use balred to obtain the Hankel
singular values (HSV) of dynamic system and also compute reduced-order model approximations
using the same command, and balredOptions to create the required HSV option set.
balredOptions also includes new options that preserve roll-off characteristics.
The following table shows some typical uses of hsvd and hsvdOptions, and how to update your
code to use balred and balredOptions instead.
4-4
The StateElimMethod option of the balredOptions command has been renamed to
StateProjection. This option specifies the method of eliminating weakly coupled states for model
reduction. For more information, see the 'StateProjection' option in the balredOptions reference
page.
Compatibility Considerations
If your code uses this option, consider modifying it to use the new option name.
Options to set error tolerance has changed in the balredOptions, stabsepOptions and
freqsepOptions commands
Still runs
The AbsTol and RelTol options for the balredOptions, freqsepOptions and stabsepOptions
commands have been replaced by SepTol. Use this option to specify the accuracy loss factor and
increasing SepTol helps separate modes straddling the stable/unstable or slow/fast boundary at the
expense of accuracy. Previously, you had to use two options to achieve the same result. For more
information, see the balredOptions, freqsepOptions and stabsepOptions function reference
pages.
Compatibility Considerations
If your code uses the AbsTol and RelTol options, consider modifying it to use the new SepTol
option.
The following table shows how to update your code to use the SepTol option instead.
Numerical improvements in the algorithms used by the Kalman Filter block might produce results
that are different from the results you obtained using previous versions.
4-5
R2021a
Numerical improvements to the algorithms used by modred, stabsep and modsep commands might
produce results that are different from the results you obtained using previous versions for descriptor
models.
Support for opening SISO Design Tool sessions saved before release R2016a will be
removed
Warns
Support for opening SISO Design Tool sessions saved before release R2016a will be removed in
release R2021b.
If you have sessions saved before release R2016a, open and resave the session files using Control
System Designer in any release from R2016a through R2021a.
4-6
5
R2020b
Version: 10.9
New Features
Bug Fixes
Compatibility Considerations
R2020b
You can perform time-domain and frequency-domain analysis on sparss and mechss model objects
with functions listed in Time and Frequency Domain Analysis. Signal-based interconnections are also
supported for sparse model objects. Use the functions listed in Model Interconnection to interface
signals between sparse models and with other LTI models. For more information, see Sparse Model
Basics. For an example, see Transient Modeling and Linear Analysis of a Cantilever Beam.
• Access the sparse matrices and sample time of the sparse model objects using sparssdata and
mechssdata.
• Obtain a summary of how the state vector is partitioned into components, interfaces, and signals
in your sparss and mechss model objects using showStateInfo.
• Sort states based on state partition using xsort.
• Specify the physical interface between two sparse models or between subcomponents of a mechss
object using the interface command. For an example, see Rigid Assembly of Model
Components.
• Use the Sparse Second Order block to represent your second-order sparse state-space model in
Simulink®. For an example, see Linearize Simulink Model to a Sparse Second-Order Model Object.
• Linearize and obtain a sparse model from a Simulink model when a Descriptor State-Space or a
Sparse Second Order block is present. For more information, see Sparse Model Basics. For an
example, see Linearize Simulink Model to a Sparse Second-Order Model Object.
• Convert between continuous-time and discrete-time and resample sparse models using c2d, d2c
and d2d. For available methods, see Sparse Model Basics.
Numerical improvements in the algorithms used by the Extended Kalman Filter and Unscented
Kalman Filter blocks and the extendedKalmanFilter and unscentedKalmanFilter functions
might produce results that are different from the results you obtained using previous versions.
5-2
6
R2020a
Version: 10.8
New Features
Bug Fixes
R2020a
If you already have a Robust Control Toolbox license, you can choose one of the following options
from the Compensator Structure dropdown menu:
• Free-form Structure — Uses loopsyn to perform the automated loop shaping with the option
to specify your controller order preference using the Desired controller order slider.
• Fixed Structure — Uses looptune to perform the automated loop shaping without the option
to specify your controller order preference. When you select Fixed Structure, Control System
Designer will use the supplied controller order to perform the automated loop shaping.
For more information, see Design Compensator Using Automated Tuning Methods.
6-2
frdfun: Utility to apply a function across all frequencies of an frd
model
Use frdfun to apply a function across all frequencies of a frequency-response data model frd. The
function to be used on the frd model must take a single matrix and return a scalar, vector, or matrix
of fixed size across the frequencies.
6-3
7
R2019b
Version: 10.7
New Features
Bug Fixes
R2019b
To use tasks in the Live Editor, on the Live Editor tab, in the Task menu, select a task. Alternatively,
in a code block in a live script, begin typing the task name and select the task from the suggested
command completions. For more information about Live Editor tasks generally, see Add Interactive
Tasks to a Live Script (MATLAB).
For more information on extended and unscented Kalman filter objects, see
extendedKalmanFilter and unscentedKalmanFilter.
ngrid, sgrid, and zgrid: Specify target axes as Axes and UIAxes to
create apps in App Designer
You can now use an Axes or UIAxes object with ngrid, sgrid, and zgrid to specify target axes
when creating apps in App Designer.
7-2
8
R2019a
Version: 10.6
New Features
Bug Fixes
Compatibility Considerations
R2019a
Compatibility Considerations
• icare replaces care and gcare for solving continuous-time Riccati equations. The care and
gcare commands are not recommended. For more information, see “care and gcare are not
recommended” on page 8-2.
• idare replaces dare and gdare for solving discrete-time Riccati equations. The dare and gdare
commands are not recommended. For more information, see “dare and gdare are not
recommended” on page 8-3.
The care and gcare commands are not recommended. Use icare to solve continuous-time implicit
Riccati equations instead. This approach has improved accuracy through better scaling and the
computation of K is more accurate when R is ill-conditioned relative to care and gcare.
Furthermore, icare includes an optional info structure to gather the implicit solution data of the
Riccati equation.
The following table shows some typical uses of care and gcare, and how to update your code to use
icare instead.
8-2
Not Recommended Recommended
• [X,L,G,report] = care(A,B,Q,R,S,E) [X,K,L,info] = icare(A,B,Q,R,S,E,G)
• [X,L,report] = gcare(H,J,NS) computes the stabilizing solution X, the state-
feedback gain K, the closed-loop eigenvalues L of
the continuous-time algebraic Riccati equation.
The info structure contains the implicit solution
data. For more information, see icare.
The dare and gdare commands are not recommended. Use idare to solve discrete-time implicit
Riccati equations instead. This approach has improved accuracy through better scaling and the
computation of K is more accurate when R is ill-conditioned relative to dare and gdare.
Furthermore, idare includes an optional info structure to gather the implicit solution data of the
Riccati equation.
The following table shows some typical uses of dare and gdare, and how to update your code to use
idare instead.
8-3
9
R2018b
Version: 10.5
New Features
Bug Fixes
R2018b
9-2
10
R2018a
Version: 10.4
New Features
Bug Fixes
R2018a
Particle Filter block uses particles and sensor data to estimate the posterior distribution of the
current state. The filter predicts the states using the nonlinear state transition function. Then, it
corrects the estimate based on sensor data and measurement likelihood model. You can specify a
fixed number of particles to use, a fixed number of state variables to estimate, and your state
estimation method.
You can find the Particle Filter block in the Control System Toolbox > State Estimation block
library in Simulink.
You can use Simulink Coder™ to deploy particle filters with multiple measurement models and fixed-
size arrays for your application.
For more information on the Particle Filter block, see Particle Filter. For more information on the
detailed workflow, see Parameter and State Estimation in Simulink Using Particle Filter Block.
To convert a model using this approach, specify the discretization method as 'least-squares'.
discreteModel = c2d(contModel,Ts,'least-squares');
Alternatively, you can create a c2dOptions option set, and set the Method property to 'least-
squares'. You can then use this option set with the c2d function.
options = c2dOptions('Method','least-squares');
discreteModel = c2d(contModel,Ts,options);
10-2
In the Sample Time Conversion dialog box, specify the Sample time, and select a Conversion
method for each block in the control system. For more information on the available conversion
methods, see Continuous-Discrete Conversion Methods. Control System Designer does not support
the new least-squares vector fitting approach.
Click OK.
The app converts the dynamic model of each block to discrete time using the specified sample time
and conversion method.
10-3
R2018a
If your model is already in discrete time, you can choose to convert it to continuous time or to
resample the system using a different sample time.
For more information, see Generate Simulink Model for Control Architecture.
10-4
11
R2017b
Version: 10.3
New Features
Bug Fixes
Compatibility Considerations
R2017b
These blocks are useful for implementing gain-scheduled controller elements in which the parameter
values vary as a function of scheduling variables. For instance, the new Varying Notch Filter block
accepts as inputs the notch frequency, the gain at the notch frequency, and the damping ratio of the
filter poles. In your model, you connect each of these inputs to an element such as a lookup table or
MATLAB function block that computes the parameter value from the scheduling variables.
The library also includes versions of the PID Controller and PID Controller (2DOF) blocks that are
preconfigured to accept PID coefficients as inputs.
To access the new library, in the Simulink Library Browser, select Control System Toolbox > Linear
Parameter Varying. For more information about using the blocks to implement gain-scheduled
control systems, see Model Gain-Scheduled Control Systems in Simulink.
To tune MATLAB function blocks representing scheduled gain values, you parameterize each
MATLAB function block with a tunableSurface object that represents the equation relating gain to
scheduling parameters. When you write the tuned parameters back to your model, the MATLAB
function is automatically updated with MATLAB® code for the tuned gain surface. Use the new
codegen command to examine the MATLAB code for the gain schedule.
If you have a code-generation product such as Simulink Coder, you can implement the tuned gain
schedule in hardware. The new functionality can result in more memory-efficient implementation,
storing only the gain surface coefficients rather than a potentially long list of lookup-table values.
For more information about modeling and tuning gain-scheduled control systems in Simulink, see:
11-2
• Model Gain-Scheduled Control Systems in Simulink
• Tune Gain Schedules in Simulink
Tuning control systems modeled in Simulink requires Simulink Control Design™ software.
where the state-feedback matrix K and the observer-gain matrix L vary with time. In your Simulink
model, use the new Varying Observer Form block to represent the LQG controller. Then use MATLAB
function blocks to implement the time-varying matrices as inputs to the Varying Observer Form block.
When you set up the model for tuning, parameterize the MATLAB function block using a
tunableSurface that computes a matrix value as a function of time. When you tune the control
system with systune and write the tuned controller parameters back to the model, the MATLAB
function block is automatically updated with MATLAB code for the tuned gain surface.
• The Varying Observer Form block and other new variable-parameter blocks for gain scheduling,
see “Gain Scheduling: Implement gain-scheduled controllers using a new library of blocks
configured to take scheduled parameters as inputs” on page 11-2.
• Modeling gain-scheduled control systems in Simulink, see Model Gain-Scheduled Control Systems
in Simulink.
• Creating gain surfaces for tuning gain schedules, see Parameterize Gain Schedules.
Tuning control systems modeled in Simulink requires Simulink Control Design software.
For more information about configuring varying requirements for gain scheduling, see:
11-3
R2017b
As an alternative, you can eliminate design points from the model grid entirely, so that they do not
contribute to any stage of tuning or analysis. To do so, use the new voidModel command, which
replaces specified models in a model array with NaN. This approach is useful when your sampling grid
includes points that represent irrelevant or unphysical design points. Using voidModel lets you
design over a grid of design points that is almost regular.
For more information about controlling how different design points contribute to tuning, see Change
Requirements with Operating Condition.
11-4
systems with non-Gaussian distributions. Previously, you could perform state estimation only for
systems with unimodal distributions using extended or unscented Kalman filters.
particleFilter uses particles and sensor data to estimate the posterior distribution of the current
state. The filter predicts the states using the nonlinear state transition function. Then, it corrects the
estimate based on sensor data and measurement likelihood model. You can specify a fixed number of
particles to use, a fixed number of state variables to estimate, and your state estimation method
based on the particle weights.
You can use MATLAB Compiler™ or MATLAB Coder software to deploy the particle filter for your
application.
For more information and examples, see the particleFilter reference page.
Also, you can now return the controller and estimator gain matrices when using the lqg function. You
can use the controller and estimator gains to, for example, implement the controller in observer form.
Compatibility Considerations
Previously, if time or frequency intervals excluded DC, balred did not attempt to match the DC gain
of the original and reduced models, even if StateElimMethod = 'MatchDC'. If you have scripts or
11-5
R2017b
functions that use balred with restricted time or frequency intervals that exclude DC, consider
updating them to set StateElimMethod = 'Truncate'. The balred command now issues a
warning when StateElimMethod = 'MatchDC' and the specified time or frequency intervals
exclude DC.
ans =
ans =
When you create a new model, the default value of Notes is now [0×1 string]. Previously, you
could only specify the Notes property as a character vector or cell array of character vectors, and
the default value was {}.
Some other dynamic system model properties accept strings as inputs, but store the values as
character vectors or a cell array of character vectors.
11-6
Functionality being removed or changed
Functionality Resu Use This Instead Compatibility Considerations
lt
balred with Warn StateElimMethod = See “Model Reduction: balred no
StateElimMethod = s 'Truncate' longer ignores MatchDC option
'MatchDC' and restricted time when specified frequency or time
or frequency range that intervals exclude DC” on page 11-5.
excludes DC
viewSpec, evalSpec Still viewGoal, evalGoal If you have functions or scripts that
work use viewSpec or evalSpec,
s consider updating them to use
viewGoal and evalGoal instead.
11-7
12
R2017a
Version: 10.2
New Features
Bug Fixes
Compatibility Considerations
R2017a
For information about how to use these blocks, see the Extended Kalman Filter and Unscented
Kalman Filter block reference pages. For examples, see Estimate States of Nonlinear System with
Multiple, Multirate Sensors and Nonlinear State Estimation of a Degrading Battery System.
• StateName and StateUnit — Track the state names and state units of the fixed LTI components
and control design blocks that make up the model. When you build a genss model from fixed and
tunable LTI components, it inherits the StateName and StateUnit values from these
components
• A, B, C, D, and E — Access the state-space matrices of a genss model. These properties model the
dependency of the state-space matrices on static control design blocks, such as realp, ureal,
ucomplex, or ucomplexm.
For more information and examples, see the genss reference page.
Additionally, the generalized matrix object, genmat, now has a Name property. Use the property to
assign a name to the generalized matrix. When you convert a static control design block such as
tunableSurface to a generalized matrix using genmat(blk), the Name property of the block is
preserved.
If you specify the gain profile in continuous time for tuning in discrete time, the tuning software
discretizes the profile. Specifying the gain profile in discrete time gives you more control over the
gain profile near the Nyquist frequency. For more information, see the documentation for the
individual tuning goals.
12-2
function is derived from the gain profile that you specify. For numeric stability and tractability, the
software now adjusts the specified gain profile when necessary to eliminate undesirable low-
frequency or high-frequency dynamics or asymptotes. This adjustment process is called
regularization.
The regularized gain profile is displayed on tuning-goal plots generated with viewSpec or in Control
System Tuner. For affected tuning goals, the getWeight or getWeights command extracts the
regularized frequency-weighting functions. For more information about regularization, see Visualize
Tuning Goals and the documentation for the individual tuning goals.
Also, the conic sector goal has a new Regularization property that allows you to specify a nonzero
regularization parameter. This property is useful when other tuning goals tend to make the sector
bound ill-conditioned at some frequencies. For more information, see TuningGoal.ConicSector.
For more information about stabilized poles and zeros, see the documentation for each tuning goal,
listed on the Tuning Goals page.
The new option is equivalent to the MaxRadius option of systuneOptions, introduced in R2016b
for command-line tuning.
Compatibility Considerations
You no longer need to use the syntaxes viewSpec(Req,CL,info) and evalSpec(Req,CL,info)
to ensure consistent scaling. The syntaxes viewSpec(Req,CL) and evalSpec(Req,CL) obtain any
necessary scaling information from the closed-loop model CL returned by systune. To force the
functions to disregard scaling information, use viewSpec(Req,CL,[]) or evalSpec(Req,CL,[]).
12-3
R2017a
12-4
13
R2016b
Version: 10.1
New Features
Bug Fixes
R2016b
For more information about conic systems, see About Sector Bounds and Sector Indices.
Previously, you could specify a negative or positive input passivity index with these tuning goals, but
only a positive output passivity index.
For more information about passivity indices, see About Passivity and Passivity Indices.
MaxRadius Option for Tuning: Prevent poles and zeros from going to
infinity
Most tuning goals used for control system tuning with systune include implicit stability or minimum-
phase constraints. The new MaxRadius option of systuneOptions constrains the maximum natural
frequency of the corresponding stabilized poles and zeros. This option is useful to prevent poles and
zeros from going to infinity as a result of algebraic loops becoming singular or control effort growing
unbounded. For more information, see the systuneOptions reference page and the reference pages
for each tuning goal.
13-2
Extended and Unscented Kalman Filters: Estimate states of nonlinear
systems
You can now estimate the states of discrete-time nonlinear systems at the command line using first-
order extended Kalman filter algorithms and unscented Kalman filter algorithms. The new state
estimation commands extendedKalmanFilter and unscentedKalmanFilter are useful for
estimation of states when new data is available during the operation of the system. You can use the
state estimates for state-feedback controllers and for applications such as condition monitoring and
fault detection. You can use MATLAB Compiler or MATLAB Coder software to deploy the estimators
in your application.
For an example of online state estimation, see Nonlinear State Estimation Using Unscented Kalman
Filter.
In R2016b, checking Wrap Phase enables a new Branch field that lets you specify the value at
which accumulated phase wraps in the response plot. For example, entering 0 causes the plot to wrap
the phase into the interval [0º,360º).
At the command line, turn on phase wrapping by setting the PhaseWrapping option of
bodeoptions or nicholsoptions to 'on'. Specify the phase-wrap cutoff point using the new
PhaseWrappingBranch option.
In R2015b and R2016a, phase-wrapped plots used the interval [0º,360º). Before R2015b, phase-
wrapped plots used the interval [–180º,180º).
13-3
14
R2016a
Version: 10.0
New Features
Bug Fixes
Compatibility Considerations
R2016a
14-2
Control System Tuner App and systune Command: Automatically tune
single-loop and multiloop control systems to meet design
requirements
Control System Toolbox now includes automatic tuning tools that previously required a Robust
Control Toolbox license. Control System Tuner and the systune command automatically tune control
systems from high-level design goals you specify, such as reference tracking, disturbance rejection,
and stability margins.
To tune a control system, you specify the tunable elements of your control system. You then capture
your design requirements using the library of tuning goals. The software jointly tunes all the free
parameters of your control system regardless of architecture, number of feedback loops, or whether
it is modeled in MATLAB or Simulink. (Tuning control systems modeled in Simulink requires a
Simulink Control Design license.)
You can also use the systune command to tune gain-scheduled controllers for control systems in
which plant dynamics change with operating conditions or time. For more information, see Gain
Scheduling.
Model Reducer also provides response plots and error plots to help ensure that the reduced-order
model preserves important dynamics.
For an example showing how to use Model Reducer, see Reduce Model Order Using the Model
Reducer App. For more information about model reduction generally, see Model Reduction Basics.
Passivity and Conic Sectors: Analyze and tune control systems for
passivity and other sector bounds
A linear system is passive when it cannot produce energy on its own and can only dissipate the
energy initially stored in it. More generally, an I/O map is passive if, on average, increasing the output
14-3
R2016a
requires increasing the input. Passive control is often part of the safety requirements in process
control, tele-operation, human-machine interfaces, and system networks.
Use the following new commands to analyze the passivity of linear systems:
Mathematically, a system is passive when all its I/O trajectories are restricted to a particular sector of
the I/O space. More generally, a conic system is a system whose trajectories lie in a given conic
sector. Conic sector bounds arise, for example, in robust control of feedback loops with static
nonlinearities. The following new commands let you analyze how well a linear system lies within any
conic sector.
• getSectorIndex — Check whether the output trajectories of a linear system lie in a particular
conic sector. Compute the relative sector index, a measure of how tightly the trajectories fit within
the sector.
• getSectorCrossover — Compute the frequencies at which the range of trajectories crosses the
sector boundary.
• sectorplot — Calculate and plot sector index as a function of frequency.
New tuning goals let you enforce passivity when tuning a control system using Control System Tuner
or the systune command.
For more background and details about the notions of passivity and sector bounds, see:
14-4
• To compute or plot Hankel singular values for specific time or frequency, use hsvdOptions or
hsvoptions to set the TimeIntervals and FreqIntervals options for the hsvd and hsvplot
commands, respectively. For more details, see the reference page for hsvdOptions.
These operations use the new functionality in the gram command that computes time-limited and
frequency-limited controllability and observability Gramians. For details, see the reference pages for
gram and the new gramOptions command.
For more information, see the sampleBlock and rsampleBlock reference pages.
H = G'*S*G,
where S is a symmetric matrix and G is a square, stable, and minimum-phase system with unit
(identity) feedthrough. H must satisfy H = H'. For more information, see the spectralfact
reference page.
Also, several properties of tunable state-space and tunable transfer function blocks have changed.
For more information, see “Functionality being removed or changed” on page 14-6.
14-5
R2016a
Compatibility Considerations
If your code uses tunable control design blocks, modify your code to use the new block names. For
more information, see “Renamed tunable control design blocks” on page 14-5.
14-6
15
R2015b
Version: 9.10
New Features
Bug Fixes
R2015b
pid2 and pidstd2 Model Objects: Represent, analyze, and use 2-DOF
PID controllers for control design
The new numeric LTI models pid2 and pidstd2 are specialized for modeling two-degree-of-freedom
(2-DOF) PID controllers. These are analogous to the 1-DOF PID models pid and pidstd.
Use pid2 and pidstd2 to represent a 2-DOF PID controller directly with the PID parameters,
expressed in parallel (pid2) or standard (pidstd2) form. For example, C2 =
pid2(Kp,Ki,Kd,Tf,b,c) creates a 2-DOF PID controller in parallel form with proportional,
integral, and derivative gains Kp, Ki, and Kd, derivative filter time constant Tf, and setpoint weights
b and c. In previous releases, to model a 2-DOF PID controller, you had to derive the controller's
equivalent transfer function (or other model), and could not directly store the 2-DOF PID parameters.
The pid2 and pidstd2 commands can also convert to PID form any type of LTI object that
represents a 2-DOF PID controller.
This release also includes new functions to help you work with 2-DOF PID controllers. These
functions include:
• getComponents — Extract two SISO control components from a 2-DOF pid2 or pidstd2
controller.
• make1DOF and make2DOF — Convert 1-DOF pid and pidstd controllers to 2-DOF pid2 and
pidstd2 controllers, and vice versa.
• piddata2 and pidstddata2 — Access parameters of 2-DOF PID controllers.
For more information about working with 2-DOF PID controller objects, see:
PID Tuner and pidtune also include options for tuning 2-DOF PID controllers with fixed setpoint
weights, such as I-PD (b = 0, c = 0) and P-ID (b = 1, c = 0).
15-2
Save Current Controller Design as Baseline in PID Tuner
In PID Tuner, you can now make the current controller design the baseline controller at any time.
This feature allows to you compare the performance of a PID Tuner controller design to the
performance of controllers obtained by further adjustment of the design.
To make the current PID Tuner design the baseline controller, by click the Export arrow and select
Save as Baseline.
When you do so, the current Tuned response becomes the Baseline response. Further adjustment of
the current design creates a new Tuned response line.
Previously, you could only designate a baseline controller when you opened the PID Tuner using the
syntax pidTuner(sys,C0).
For more information about analyzing controller performance in PID Tuner, see Analyze Design in PID
Tuner.
For information about changing the default values, see the LPV System block reference page.
15-3
R2015b
Unwrap Phase in the plot Property Editor. Previously, unchecking this option caused the plots to
wrap the phase into [–180º,180º). The change makes it easier to visualize 180º phase crossings on
analysis plots.
The default plot behavior (exact or unwrapped phase) is unchanged. The behavior of commands that
return numerical phase response data, such as bode, is also unchanged. These commands always
return the unwrapped phase.
15-4
16
R2015a
Version: 9.9
New Features
Bug Fixes
Compatibility Considerations
R2015a
To use the Design Focus option in PID Tuner, click Options and select a design focus from the Focus
menu.
You can still use the Response Time and Transient Behavior sliders to further adjust the balance
between reference tracking and input disturbance rejection.
To specify a design focus for command-line tuning with pidtune, use pidtuneOptions to set the
DesignFocus option. For example, the following commands design a PIDF controller for the plant G
with a crossover frequency of 10 rad/s, specifying reference tracking as the design focus.
opt = pidtuneOptions('DesignFocus','reference-tracking');
C = pidtune(G,'pidf',10,opt);
For more information about using the design focus option, see:
• Tune PID Controller to Favor Reference Tracking or Disturbance Rejection (PID Tuner)
• Tune PID Controller to Favor Reference Tracking or Disturbance Rejection at Command Line
16-2
For more information about using PID Tuner, see Designing PID Controllers with the PID Tuner. For
more information about command-line PID tuning, see PID Controller Design at the Command Line.
For more information on Linear Parameter-Varying models, see Linear Parameter-Varying Models.
inputs and outputs are string vectors that specify the names of the inputs and outputs of the
interconnected model. APs is a string vector that lists the signal locations at which to insert analysis
points. The software automatically inserts an AnalysisPoint block with channels corresponding to
these locations. Previously, you had to create AnalysisPoint blocks separately and include them in
the list of models to connect.
Use connect to build this system with an analysis point at the plant input, u.
C.InputName = 'e'; C.OutputName = 'u';
G.InputName = 'u'; G.OutputName = 'y';
Sum = sumblk('e = r-y');
T = connect(G,C,Sum,'r','y','u');
These commands return a generalized state-space (genss) model with one AnalysisPoint block.
You can use the analysis point, for example, to extract the open-loop response of the system at u:
L = getLoopTransfer(T,'u',-1);
For a more detailed example, see Mark Analysis Points in Closed-Loop Models. For more information
about using analysis points in dynamic system models, see the AnalysisPoint reference page.
16-3
R2015a
• From the MATLAB desktop, in the Apps tab, in the Control System Design and Analysis
section, click Linear System Analyzer.
• From the MATLAB command line, use the linearSystemAnalyzer function. Previously, this
function was called ltiview. Using ltiview to open Linear System Analyzer does not generate
an error in this release, but the function might be removed in a future release.
Compatibility Considerations
If you have scripts or functions that use ltiview, consider replacing those calls with
linearSystemAnalyzer.
Using sisotool to open SISO Design Tool does not generate an error in this release, but the
function might be removed in a future release.
Compatibility Considerations
If you have scripts or functions that use sisotool, consider replacing those calls with
controlSystemDesigner.
S = getBlockValue(M)
This syntax lets you transfer the block values from one generalized model to another model that uses
the same Control Design Blocks, as follows:
S = getBlockValue(M1);
setBlockValue(M2,S);
Compatibility Considerations
Previously, the syntax getBlockValue(M) returned the current values of the blocks of M as a vector
list:
[Val1,Val2,...,ValN] = getBlockValue(M)
16-4
Now, using this syntax causes an error. You can still obtain block values in a list by specifying the
block names as input arguments, as follows.
[Val1,Val2,...,ValN] = getBlockValue(M,Blkname1,Blkname2,...,BlknameN)
16-5
17
R2014b
Version: 9.8
New Features
Bug Fixes
Compatibility Considerations
R2014b
An LPV system is a linear state-space system whose dynamics vary as a function of certain time-
varying parameters called the scheduling parameters. Mathematically, an LPV system is represented
as:
dx t = A p x t + B p u t
y t =C p x t +D p u t
x 0 = x0
where
The linear system can be extended to contain offsets in the system’s states, input, and output signals.
Mathematically, the LPV system is represented by the following equations:
dx t = A p x t + B p u t + dx p − A p x p − B(p)u(p)
y t = C p x t + D p u t + y p − C p x p − D(p)u(p)
x 0 = x0
dx p , x p , u p , y p are the offsets in the values of dx(t), x(t), u(t) and y(t) at a given
parameter value p = p(t).
LPV system can be thought of as a first-order approximation of a nonlinear system over a grid of
scheduling parameter values. For example, you can linearize a Simulink model between a given input
and output ports over a grid of equilibrium operating conditions. The values of the model inputs,
outputs and state values at each operating point define the offsets, while the linear state-space
models obtained by linearization define the state-space data. The LPV system thus generated can
work as a proxy for the original model for facilitating faster simulations and control system design.
For more information, see Linear Parameter-Varying Models.
The LPV System block accepts the state-space matrices and offsets over a grid of scheduling
parameter values. The state-space matrices must be specified as an array of model objects. The
SamplingGrid property of the array defines the scheduling parameters for the LPV system. For
examples of using this block, see:
17-2
• Using LTI Arrays for Simulating Multi-Mode Dynamics
• Approximating Nonlinear Behavior using an Array of LTI Systems
• LPV Approximation of a Boost Converter Model
You can access this block from the Control System Toolbox library. For an example of using this block,
see State Estimation Using Time-Varying Kalman Filter.
Compatibility Considerations
AnalysisPoint replaces the loopswitch Control Design Block.
Models that contain loopswitch blocks continue to work, for backward compatibility. However, it is
recommended that you use AnalysisPoint blocks in new models. If you have scripts or functions
that use loopswitch blocks, consider updating them to use AnalysisPoint instead.
Using pidtool does not generate an error in this release, but the function may be removed in a
future release.
17-3
R2014b
Compatibility Considerations
If you have scripts that use pidtool, consider replacing those calls with pidTuner.
Compatibility Considerations
If you have scripts or functions that use getSwitches, consider replacing those calls with
getPoints.
17-4
18
R2014a
Version: 9.7
New Features
Bug Fixes
Compatibility Considerations
R2014a
To access the PID Tuner, use the pidtool command. For example, to tune a PI controller for an LTI
model, G:
pidtool(G,'PI')
For more information about the PID Tuner, see Designing PID Controllers with the PID Tuner.
PID Tuner uses system identification to estimate an LTI model from the response data. You can
interactively adjust the identified parameters to obtain an LTI model with a response that fits your
response data. PID Tuner automatically tunes a PID controller for the estimated model. You can then
interactively adjust the performance of the tuned control system, and save the estimated plant and
tuned controller.
For an example, see Interactively Estimate Plant Parameters from Response Data.
1
τ= .
ωnζ
18-2
Compatibility Considerations
For a discrete-time system with unspecified sample time (Ts = -1), damp now calculates the natural
frequency and damping ratio by assuming Ts = 1. Previously, the software returned [] for the
natural frequency and damping ratio of such systems.
damp returns outputs in order of increasing natural frequency. Therefore, this change can result in
reordered poles for systems with unspecified sample times.
For more information on the outputs, see the damp reference page.
18-3
19
R2013b
Version: 9.6
New Features
Bug Fixes
Compatibility Considerations
R2013b
Set this property to a structure whose fields are the names of the sampling variables and contain the
sampled variable values associated with each model. All sampling variables should be numeric and
scalar valued, and all arrays of sampled values should match the dimensions of the model array.
For example, suppose you create a 11-by-1 array of linear models, sysarr, by taking snapshots of a
linear time-varying system at times t = 0:10. The following code stores the time samples with the
linear models.
sys.SamplingGrid = struct('time',0:10)
To instruct connect to retain unconnected states, use the new connectOptions command with the
existing connect command.
Compatibility Considerations
In previous releases, connect returned a tf or zpk model when all input models were tf or zpk
models. Therefore, connect might now return state-space models in cases where it previously
returned tf or zpk models.
19-2
updateSystem command for updating dynamic system data in a
response plot
The new updateSystem command replaces the system data used to compute a response plot with
data derived from a different dynamic system, and updates the plot. updateSystem is useful, for
example, to cause a plot in a GUI to update in response to interactive input.
Compatibility Considerations
If you have scripts or functions that use getLoopID, consider replacing those calls with
getSwitches.
Compatibility Considerations
If you have scripts or functions that use the LoopID property, consider updating your code to use
Location instead.
19-3
20
R2013a
Version: 9.5
New Features
Bug Fixes
R2013a
20-2
• The tuned system’s disturbance rejection response is too sluggish for your requirements. In this
case, try moving the Transient behavior slider to the left to make the controller more aggressive
at disturbance rejection.
• The tuned system’s reference tracking response has too much overshoot for your requirements. In
this case, try moving the Transient behavior slider to the right to increase controller robustness
and reduce overshoot.
In Frequency domain design mode, the PID Tuner has Bandwidth and Phase margin sliders.
These sliders are the frequency-domain equivalents of the Response time and Transient behavior
sliders, respectively.
20-3
21
R2012b
Version: 9.4
New Features
Bug Fixes
Compatibility Considerations
R2012b
You can use these Control Design Blocks to build control systems for tuning with Robust Control
Toolbox tuning commands such as systune and looptune. For more information, see the
ltiblock.pid2 and loopswitch reference pages.
These commands are particularly useful for validating the response functions of control systems
tuned using Robust Control Toolbox tuning commands such as systune.
Additionally, the new showTunable command displays the current value of tunable components in a
generalized LTI model of a control system. This command is useful for querying tuned parameter
values of control systems tuned using Robust Control Toolbox tuning commands such as systune.
For more information, see the reference pages for these new commands and the following topics:
• Generalized Models
• Models with Tunable Coefficients
• hasInternalDelay
• hasdelay
• isstatic
• isreal
21-2
• isfinite
• isproper
• isstable
B = hasdelay(sysarray,'elem');
returns a logical array. B of the same size as sysarray indicating whether the corresponding model
in sysarray contains a time delay. Without the 'elem' flag,
B = hasdelay(sysarray);
returns a scalar logical value that is equal to 1 if any entry in sysarray contains a time delay.
Compatibility Considerations
isfinite and isstable now return a scalar logical value when invoked without the 'elem' flag.
Previously, isfinite and isstable returned a logical array by default.
21-3
22
R2012a
Version: 9.3
New Features
Compatibility Considerations
R2012a
For more information, see the getPeakGain and getGainCrossover reference pages.
These functions use the SLICOT library of numerical algorithms. For more information about the
SLICOT library, see http://slicot.org.
C = pidtune(sys,'pi',wc);
Compatibility Considerations
Results of this change include:
• The amplitude of the impulse response calculated by impulse and impulseplot is scaled by
1/Ts relative to previous versions.
• Discretization using the impulse-invariant ('impulse') method of c2d returns a model that is
scaled by Ts compared to previous releases. This scaling ensures a close match between the
frequency responses of the continuous-time model and the impulse-invariant discretization as Ts
approaches zero (for strictly proper models). In previous releases, the frequency responses
differed by a factor of Ts.
22-2
For more information about using this method, see the d2c reference page and Continuous-Discrete
Conversion Methods.
Identified linear models include idfrd, idss, idproc, idtf, idgrey and idpoly models.
• Any Control System Toolbox or Robust Control Toolbox functions that operate on dynamic
systems, including:
methods('DynamicSystem')
• Analysis and design tools such as ltiview, sisotool and pidtool.
• The LTI System block in Simulink models.
22-3
R2012a
22-4
23
R2011b
Version: 9.2
New Features
Compatibility Considerations
R2011b
S = sumblk('e = r-y');
Additionally, both sumblk and connect now support vector-based signal naming for interconnecting
multi-input, multi-output (MIMO) models. For more information, see the sumblk and connect
reference pages.
For more information about these commands, see the reference pages for each command.
23-2
24
R2011a
Version: 9.1
New Features
Compatibility Considerations
R2011a
• Control Design Blocks—Parametric components that are the building blocks for constructing
tunable models of control systems. Control Design Blocks include:
These models arise from interconnections between numeric LTI models (such as tf , ss, or frd)
and Control Design Blocks. You can also create genss models by using the tf or ss commands
with one or more realp or genmat inputs.
This release also adds new functions for working with generalized models:
For more information about the new model types and about modeling systems that contain tunable
coefficients, see the following in the Control System Toolbox User's Guide:
New Time and Frequency Units for Models and Response Plots
All linear model objects now have a TimeUnit property for specifying unit of the time variable, time
delays in continuous-time models, and sampling time in discrete-time models. The default time units
is seconds. You can specify the time units, for example, as hours. See Specify Model Time Units for
examples.
Frequency-response data ( frd and genfrd) models also have a new FrequencyUnit property for
specifying units of the frequency vector. The default frequency units is rad/TimeUnit, where
24-2
TimeUnit is the system time units. You can specify the units, for example as kHz, independently of
the system time units. See Specify Frequency Units of Frequency-Response Data Model for examples.
If your code uses the Units property of frequency-response data models, it continues to work as
before.
See the model reference pages for available time and frequency units options.
Changing the TimeUnit and FrequencyUnit properties changes the overall system behavior. If you
want to simply change the time and frequency units without modifying system behavior, use
chgTimeUnit and chgFreqUnit, respectively.
The time and frequency units of the model appear on the response plots by default. For multiple
systems, the units of the first system are used. You can change the units of the time and frequency
axes:
• For a discrete-time pid controller with a derivative filter (Tf≠ 0) and Dformula set to
'ForwardEuler', the sampling time Ts must be less than 2*Tf.
• For a discrete-time pidstd controller with a derivative filter (N≠ Inf) and Dformula set to
'ForwardEuler', the sampling time Ts must be less than 2*Td/N.
• The Trapezoidal value for DFormula is not available for a discrete-time pid or pidstd
controller with no derivative filter (Tf = 0 or N = Inf).
Compatibility Considerations
On loading pid or pidstd controllers saved under previous versions, the software changes certain
properties of controllers that do not have stable derivative filter poles.
• For a discrete-time pid controller with a derivative filter (Tf≠ 0), Dformula set to
'ForwardEuler', and sampling time Ts ≥ 2*Tf, the derivative filter time is reset to Tf = Ts.
• For a discrete-time pidstd controller with a derivative filter (N≠ Inf), Dformula set to
'ForwardEuler', the sampling time Ts ≥ 2*Td/N, the derivative filter constant is reset to N =
Td/Ts.
24-3
R2011a
• For a discrete-time pid or pidstd controller with no derivative filter and DFormula =
'Trapezoidal', the derivative filter integrator formula is reset to DFormula =
'ForwardEuler'.
The software issues a warning when it changes any of these values. If you receive such a warning,
validate your controller to ensure that the new values achieve the desired performance.
Note This new definition is consistent with the System Identification Toolbox definition of q^-1.
Use the new variable by setting the Variable property of a tf or zpk model to q^-1. For example,
entering:
Transfer function:
1 + 2 q^-1 + 3 q^-2
-------------------
5 + 6 q^-1 + 7 q^-2
When you set Variable to q^-1, tf interprets the numerator and denominator vectors as ascending
powers of q^-1.
24-4
25
R2010b
Version: 9.0
New Features
Compatibility Considerations
R2010b
New Commands and GUI for Modeling and Tuning PID Controllers
This release introduces specialized tools for modeling and designing PID controllers.
The new PID Tuner GUI lets you interactively tune a PID controller for your required response
characteristics. Using the GUI, you can adjust and analyze your controller's performance with
response plots, such as reference tracking, load disturbance rejection, and controller effort, in both
time and frequency domains.
The PID Tuner supports all types of SISO plant models, including:
• Designing PID Controllers in the Control System Toolbox Getting Started Guide
• The new demo Designing PID for Disturbance Rejection with PID Tuner
The new pidtune command lets you tune PID controller gains at the command line.
pidtune automatically tunes the PID gains to balance performance (response time) and robustness
(stability margins). You can specify your own response time and phase margin targets using the new
pidtuneOptions command.
The new LTI model objects pid and pidstd are specialized for modeling PID controllers.
With pid and pidstd you can model a PID controller directly with the PID parameters, expressed in
parallel (pid) or standard (pidstd) form. The pid and pidstd commands can also convert to PID
form any type of LTI object that represents a PID controller.
25-2
Previously, to model a PID controller, you had to derive the controller's equivalent transfer function
(or other model), and could not directly store the PID parameters.
For additional information, see the pid and pidstd reference pages
In addition to the Robust Response Time tuning algorithm, SISO Design Tool offers a collection of
classical design formulas, including the following:
For information about using SISO Design Tool, see SISO Design Tool in the Control System Toolbox
User's Guide. For specific information about the automatic PID Tuning options in SISO Design Tool,
see PID Tuning in the Control System Toolbox User's Guide.
System dynamics can vary because of parameter variations or different operating conditions. You
represent variations in system dynamics of the plant (G), sensor (H), or both in a feedback structure
using arrays of LTI models. Then, design a controller for a nominal model in the array and analyze
that the controller satisfies the design requirements on the remaining models using the design and
analysis plots. For more information, see:
In prior versions, the output of repsys(sys,N) was the same as that of append(sys,...,sys).
25-3
R2010b
See the repsys and append reference pages for more information.
Compatibility Considerations
Code that depends upon the previous result of repsys(sys,N) no longer returns that result. To
obtain the previous result, replace repsys(sys,N) with sys*eye(N).
25-4
26
R2010a
Version: 8.5
New Features
Compatibility Considerations
R2010a
Compatibility Considerations
This release deprecates the prewarp method for c2d, d2d, and d2c. Instead, use c2dOptions,
d2dOptions, or d2cOptions to specify the tustin method and a prewarp frequency. For more
information, see Continuous-Discrete Conversion Methods and the c2d, d2d, and d2c reference
pages.
• Remove spurious or unneeded data from frd models you create from measured frequency
response data.
• Remove data at intersecting frequencies from frd models before merging them into a single frd
model with fcat, which can only merge frd models containing no common frequencies.
26-2
27
R2009b
Version: 8.4
New Features
R2009b
For more information on designing compensators using the SISO Design Tool, see SISO Design Tool.
For information on tuning compensators using automated tuning methods, see Automated Tuning.
27-2
28
R2009a
Version: 8.3
New Features
Compatibility Considerations
R2009a
Note This new definition is consistent with the System Identification Toolbox definition of q.
Compatibility Considerations
If you use the q variable, you may receive different results than in previous releases when you:
The resulting transfer function differs from previous releases when both the
H = tf([1,2],[1 3 8],0.1,'Variable','q')
q+2 z+2
≡
q2 + 3q + 8 2
z + 3z + 8
1 + 2q 1 + 2z−1 z2 + 2z
2
≡ −1 −2
≡ 2
1 + 3q + 8q 1 + 3z + 8z z + 3z + 8
28-2
29
R2008b
Version: 8.2
New Features
Compatibility Considerations
R2008b
For more information on forming LQG servo controllers, see Linear-Quadratic-Gaussian (LQG)
Design, the lqi reference page, and the lqgtrack reference page.
The 'current' flag was moved from the lqgreg function to the kalman function.
Compatibility Considerations
The following code:
kest = kalman(sys,Qn,Rn)
c = lqgreg(kest,k)
To update your code to return the same results as in previous releases, use the following code with
the added string 'delayed' in the kalman command:
kest = kalman(sys,Qn,Rn,'delayed')
c = lqgreg(kest,k)
For information on using these functions with the current flag in the kalman function, see the
kalman and lqgreg reference pages.
For more information on upsampling, see the upsample reference page and Upsample a Discrete-
Time System in the Control System Toolbox User's Guide.
For more information on setting the frequency band for scaling state-space realizations, see Scaling
State-Space Models and the prescale reference page.
29-2
New Command to Reorder the States of State-Space Models
You can now reorder the states of state-space models according to a specified permutation using the
xperm command.
For more information on reordering states, see the xperm reference page.
• System name
• Line color
• Line style
• Line width
• Marker type
For more information on customizing the appearance of response plots using plot tools, see
Customizing Response Plots Using Plot Tools in the Control System Toolbox User's Guide.
29-3
30
R2008a
Version: 8.1
New Features
R2008a
30-2
31
R2007b
Version: 8.0.1
New Features
R2007b
31-2
32
R2007a
Version: 8.0
New Features
R2007a
• Model, simulate, and analyze any interconnection of linear systems with delays, such as systems
containing feedback loops with delays.
• Exactly analyze and simulate control systems with long delays. You can evaluate control
strategies, such as Smith Predictor and PID control for first-order-plus-dead-time plants.
• Use new commands for modeling state-space models with delays including: delayss,
getDelayModel, and setDelayModel.
For more information, see the section on Models with Time Delays.
• New Singular Frequency Based Tuning lets you design PID compensators for both stable and
unstable plants.
• New H-infinity Loop Shaping lets you find compensators based on a desired open-loop bandwidth
or loop shape. This feature requires Robust Control Toolbox software.
• Updated Internal Model Control (IMC) Tuning now supports unstable plants.
For more information, see the section on automated tuning in the Control System Toolbox
documentation.
32-2
33
R2006b
Version: 7.1
New Features
R2006b
33-2
34
R2006a
Version: 7.0
New Features
R2006a
If you have installed Simulink Response Optimization™ software, you can now optimize the
compensator parameters inside the SISO Design Tool GUI. You can specify time- and frequency-
domain requirements on SISO Design Tool plots such as bode and step, and use numerical
optimization algorithms to automatically tune your compensator to meet your requirements. See the
Simulink Response Optimization documentation for more details.
The Compensator Editor used to edit the numerical values of poles and zeros has been upgraded to
better handle common control components such as lead/lag and notch filters.
Many control systems involve multiple feedback loops, some of which are coupled and need joint
tuning. The SISO Design Tool now lets you analyze and tune multi-loop configurations. You can focus
on a specific loop by opening signals to remove the effects of other loops, gain insight into loop
interactions, and jointly tune several SISO loops.
SISO Design Tool Fully Integrated with the Controls & Estimation Tools Manager
To improve workflow and better leverage other tools, such as Simulink Control Design software and
Simulink Response Optimization software, the SISO Design Tool is now fully integrated with the
Controls & Estimation Tools Manager (CETM). This provides a signal environment for the design and
tuning of compensators.
When you open the SISO Design Tool, the CETM also opens with a SISO Design Task. Many SISO
Design Tool features, such as importing models, changing loop configurations, etc., have been moved
to the SISO Design Task in CETM. In addition, related tasks such as Simulink based Tuning and
Compensator Optimization are seamlessly integrated with the SISO Design Task. See the Control
System Toolbox Getting Started Guide for details on the new work flow.
LTI Objects
Descriptor and Improper State-Space Models Fully Supported
There is now full support for descriptor state-space models with a singular E matrix. This now lets
you build state-space representations, such as PID, and manipulate improper models with the
superior accuracy of state-space computations. In previous versions, only descriptor models with a
nonsingular E matrix were supported.
34-2
New Commands to Calculate Time Response Metrics
The new stepinfo and lsiminfo commands compute time-domain performance metrics, such as
rise time, settling time, and overshoot. You can use these commands to write scripts that
automatically verify or optimize such performance requirements. Previously, these metrics were
available only from response plots.
The commands connect, feedback, series, parallel, and lft now let you connect systems by
matching names of I/O channels. A helper function, sumblk, has also been added to simplify the
specification of summing junctions. Altogether this considerably simplifies the task of deriving models
for complicated block diagrams. In previous releases, only index-based system connection was
supported.
The ioDelay property is deprecated from state-space models. Instead, these models have a new
property called InternalDelay for logging all delays that cannot be pushed to the inputs or
outputs. Driving this change is the switch to a representation of delays in terms of delayed
differential equations rather than frequency response. See Models with Time Delays for more details
on internal delays, and ss/getdelaymodel for details on the new internal representation of state-
space models with delays.
This new property lets you attach a name (string) to a given LTI model. The specified name is
reflected in response plots.
The new exp command simplifies the creations of continuous-time transfer functions with delays. For
more information, type help lti/exp at the MATLAB prompt.
• fcat — Concatenates one or more FRD models along the frequency dimension (data merge).
• fselect — Selects frequency points or range in frd model.
• fnorm — Calculates pointwise peak gain of frd model.
The .* operation is supported for transfer functions and zero-pole-gain objects. This allows you to
perform element-by-element multiplication of MIMO models.
Numerical Algorithms
There have been several major improvements in the Control System Toolbox numerical algorithms,
many of which benefit the upgraded SISO Design Tool:
• New scaling algorithm that maximizes accuracy for badly scaled state-space models
• Performance improvement in time and frequency response computations through MEX-files
• More accurate computations of the zero-pole-gain and transfer function representations of a state-
space model
34-3
R2006a
34-4
35
R14SP3
Version: 6.2.1
R14SP2
Version: 6.2
New Features
R14SP2
For a detailed description of the commands, see the Control System Toolbox documentation.
36-2