Improved Workflow for Physical Assembly: Use new functions to define interfaces and create physical couplings
You can now use the new functions addInterface
and assemble to
create physical assembly of components. These functions replace the
interface function and can handle more general situations when
working in non-nodal (general) coordinates and allow you to create physical assemblies for
ss and sparss models. The notion of coupling for
mechss models remains the same as with interface, as
you can still define the coupling interface using the index of interface nodes using the
addInterface function.
For examples, see Assemble Parts of System Using Coupling Interfaces, and the addInterface
and assemble
function reference pages.
As a result of this change, interface is not recommended.
Model Reducer App: Support for Frequency Response Fitting and Zero-Pole Truncation methods
You can now obtain reduced-order models using the Frequency Response Fitting and Zero-Pole Truncation methods in the Model Reducer app.
Frequency Response Fitting — Fit low-order models to obtain low-order approximations of sparse LTI models in the frequency band of interest. The frequency response fitting method is applicable to all types of sparse models with fewer limitations than Balanced Truncation or POD. In particular, it is effective at reducing models with unstable or undamped poles. Frequency response fitting is also applicable to non-sparse models but is usually less effective than Balanced Truncation for such models. Additionally, this method uses the AAA interpolation algorithm rather than a least-squared fitting algorithm. Accordingly, you must not use this method to fit models to noisy data as the algorithm will tend to interpolate noise and produce poor results.
Zero-Pole Truncation — Obtain low-order zero-pole-gain
approximations of sparse state-space models. This method computes a subset of the zeros
and poles of sparse models, typically in a specific low-frequency band [0
fmax]. It can yield better low-frequency
approximations than modal truncation at the expense of more computation. This method
also provides direct control over the roll-off slope past the frequency
fmax. Because this method calculates zeros
for each input-output pair, it is most suitable for models with small input-output
sizes. Additionally, this method is applicable only to models with a valid
sparss representation.
Reduce Model Order Live Task: Support for multiple frequency and time intervals of focus for balanced truncation
You can now specify multiple time and frequency intervals to limit the analysis of state contributions to those intervals when using the Balanced Truncation method. Previously, Reduce Model Order Live Editor task supported only a single frequency interval and no time intervals.
modalsep and modalreal: Support for sparse
models
You can now use modalsep and
modalreal to
compute a truncated modal form of sparse state-space models. This is helpful when you want
to quickly obtain a truncated modal form of sparse models. For more flexibility, it is
recommended you use reducespec to
first obtain a reduced-order model, then apply modalsep and
modalreal to the reduced model.
lyapchol and dlyapchol: Support for LR-ADI
algorithm for solving equations with sparse matrices
lyapchol and dlyapchol now use the low-rank alternating directions implicit (LR-ADI)
algorithm to compute a low-rank Cholesky factorization when both A and
E are sparse matrices.
Previously, the function converted A and E to full matrices before computing the factorization.
lyap and dlyap: New option to disable
automatic scaling
lyap and dlyap now support disabling automatic
scaling of matrices. Use the new Scaling input argument to enable or
disable scaling.
lyap(__,Scaling="off") dlyap(__,Scaling="off")
augdelay: Append internal delay signals to outputs of state-space
model
Use the augdelay
function to append the internal delay signals as extra outputs of the model. This is helpful
when you want to monitor the contribution of these internal signals.
Linear Analysis Plots: Specify response properties using name-value arguments
When creating linear analysis plots, you can now specify response properties using name-value arguments. Any properties that you specify using name-value arguments override other arguments that set the same property. For example, the following command sets the plot color to red.
stepplot(sys,Color=[1 0 0])
As a result of this change, response properties that were once subproperties of
Responses.SourceData are now subproperties of
Responses. For more information, see Chart object subproperties of Responses.SourceData property are now subproperties of Responses property.
Linear Analysis Plots: Control automatic styling of responses
For linear analysis plots, you can now control the automatic color, line style, and marker style of responses in the plot.
This table shows the color, line style, and marker style properties for response chart
objects, such as stepplot and bodeplot.
| New Chart Object Property | Description |
|---|---|
ColorOrder | Color order for multiple response plots (not supported for HSV plots) |
LineStyleOrder | Line style order for multiple response plots (not supported
for |
MarkerStyleOrder | Marker style order for multiple response plots (not supported
for |
ColorOrderMode | Indicates whether the property value of
|
LineStyleOrderMode | |
MarkerStyleOrderMode | |
NextSeriesIndex | Series index for the next response that you add to the chart. Once the software
assigns this series index to a response, it increments
NextSeriesIndex by one. |
The Responses property of each chart object contains one response
object for each response in a chart. This table shows the new style properties for response
objects.
| New Response Object Property | Description |
|---|---|
ColorMode | Indicates whether the property value of
|
LineStyleMode | |
MarkerStyleMode | |
SeriesIndex | Series index, which determines the color, line style, and marker style to select from the corresponding order property of the chart object. When
you add a response to a chart, the software sets its series index to the value of
the |
SeriesIndexMode | Indicates whether the property value of |
Linear Analysis Plots: Time and frequency unit mode properties
Linear analysis chart objects now have TimeUnitMode and
FrequencyUnitMode properties that indicate the specification modes of
the TimeUnit and FrequencyUnit properties.
If you do not specify a time or frequency unit, the corresponding
TimeUnitMode or FrequencyUnitMode property value
is "auto". In this case, the plot uses the unit of the first response
being plotted.
If you specify a time or frequency unit, the corresponding
TimeUnitMode or FrequencyUnitMode property value
is "manual".
Linear Analysis Plots: Configure legends using Legend
property
For all linear analysis plots, configure legends using the Legend
property of the chart object. Also, you can now configure legend properties using name-value
arguments with the legend function.
You can now configure the following legend properties:
Axes
Location
AxesMode
Orientation
Visible
Interpreter
FontSize
FontWeight
FontAngle
FontName
The following object properties are now subproperties of the
Legend property and their names have changed. The previous property
names still work, but using them is not recommended.
| Previous Property | New Property |
|---|---|
LegendAxes | Legend.Axes |
LegendAxesMode | Legend.AxesMode |
LegendVisible | Legend.Visible |
LegendLocation | Legend.Location |
LegendOrientation | Legend.Orientation |
Linear Analysis Plots: Customize plot settings using Property Inspector
For all linear analysis plots, you can now configure the plot settings using the Property Inspector.
Control System Toolbox settings moved to MATLAB Settings dialog box
Control System Toolbox™ settings have been moved to the MATLAB® Settings dialog box.
The ctrlpref function now opens the Control
System Toolbox section of the MATLAB Settings dialog box.
Linear Analysis Plots with Custom Grids: Specify grid styling with new and updated properties
For linear analysis plots with custom grids, you can now specify grid styling using the following new or updated chart object properties.
| Chart Objects | Property | Description of Change |
|---|---|---|
AxesStyle.GridType |
| |
AxesStyle.GridTypeMode | New property that indicates whether the
| |
AxesStyle.GridType | New property for setting the grid type of Nichols and Nyquist plots to one of these values:
| |
AxesStyle.GridTypeMode | New property that indicates whether the
| |
AxesStyle.GridMagnitudeSpec | New property for specifying gain values of grid contours when
AxesStyle.GridType is "n-grid" | |
AxesStyle.GridPhaseSpec | New property for specifying phase values of grid contours when
AxesStyle.GridType is "n-grid" |
Impulse Response: Support for sparse index-2 DAEs
You can now use impulse and impulseplot to compute the impulse response of sparse index-2 DAEs.
As a result of this change, proper orthogonal decomposition (ProperOrthogonalDecomposition) now supports impulse-based excitation of sparse
index-2 DAEs.
stepinfo: Support for arrays of LTI systems
Using the stepinfo function, you can now compute
step-response characteristics for an array of LTI systems.
ProperOrthogonalDecompositionOptions: Support for parallel execution
with UseParallel option
You can now use the UseParallel option when you want to use a
parallel pool for parallel execution when using getrom
(pod).
This table shows how to specify the setting depending on your goal.
| Goal | Setting |
|---|---|
| Write code that runs on the MATLAB client and uses built-in multithreading to make best use of the local resources. | R.Options.UseParallel="off" (default) |
| Write portable code that runs on a parallel pool and, if a pool is not available, runs on the MATLAB client. | R.Options.UseParallel="auto" |
| Write code that runs on a parallel pool and errors if a pool is not available. | R.Options.UseParallel="on" |
Enhanced control over parallel execution
You now have more control over when to use a parallel pool to run the functions that support parallel execution.
The UseParallel argument of these functions (or their corresponding
option set) now accepts new "off", "auto" or
"on" values. Specify UseParallel as
"auto" to automatically use a parallel pool if one is available or as
"on" to always use a parallel pool.
Starting in R2026a, specifying the UseParallel as
true or false is not recommended. For more
information, see Logical values for UseParallel argument not recommended.
Models with Internal Delays: Simulation now based on approximate c2d
discretization
Simulating state-space models with internal delays is now based on approximate
c2d discretization.
In general, when you simulate models with internal delays:
Accuracy increases as the time step size decreases. The accuracy may deteriorate for large time step sizes.
Simulations with zero-order hold (ZOH) and first-order hold (FOH) approximate internal signals w(t) by piecewise-constant or piecewise-linear signals.
To gauge whether the selected time step size is small enough, you can compare
sys and c2d(sys,t(2)-t(1),method) in frequency
domain.
For an example, see Validate Simulation Results for Models with Internal Delays.
c2d: Returns matching initial condition for models with internal
delays
The output argument G of c2d now has extra columns corresponding to w[0] initial
conditions for models with internal delays.
Additionally, the mapping of the discrete states is given by:
The matrix G is useful to map continuous-time initial conditions to
equivalent discrete-time initial conditions. Note that this expression depends on the input
u delayed by the discrete input delays
Nu.
Sparse Balanced Truncation: Support for automatic scaling
Use the new Scaling option of
SparseBalancedTruncationOptions to enable or disable automatic scaling.
Scaling can improve conditioning and accuracy of LR-ADI iterations by compressing the
numerical range. This option uses equilibrate for scaling the sparse
matrices.
Functionality being removed or changed
Specifying axes object as parent of linear analysis plot not recommended
Still runs
Specifying an Axes object or a UIAxes object as the
parent container of a linear analysis plot is not recommended. Instead, specify the parent
container as one of these objects:
Figure
TiledChartLayout
UIFigure
UIGridLayout
UIPanel
UITab
Chart object subproperties of Responses.SourceData property are
now subproperties of Responses property
Behavior change
For all linear analysis plot chart objects, subproperties under the
Responses.SourceData property are now direct subproperties of the
Responses property. The Responses.SourceData
property has been removed.
Peak response characteristic properties of frequency-domain plots renamed
Behavior change
For frequency-domain linear analysis plots, the peak response characteristic property names have changed. The behavior of the properties remains the same.
| Chart Object | Old Property Name | New Property Name |
|---|---|---|
BodePlot | Characteristics.FrequencyPeakResponse | Characteristics.PeakResponse |
NyquistPlot | ||
NicholsPlot | ||
SigmaPlot | Characteristics.SigmaPeakResponse |
Specify multiline titles and labels in linear analysis plots using string arrays
Behavior change
When creating linear analysis plots, you can now specify multiline titles and axis labels using string arrays or cell arrays of character vectors.
stepplot(sys) title(["first line";"second line"]);
Before R2026a, specify multiline titles and labels using a
newline character.
stepplot(sys) title("first line" + newline + "second line");
interface not recommended
Still runs
The interface function is not recommended. To perform assembly of
components, use the new commands addInterface
and assemble.
These new functions handle more general situations when working with non-nodal (general)
coordinates. The notion of physical coupling remains the same as for
interface.
lyapchol and dlyapchol no longer converts
sparse inputs to full
Behavior change
lyapchol and dlyapchol now support sparse
inputs A and E, and use LR-ADI algorithm to compute
a low-rank factorization. Previously, the function converted A and
E to full matrices before computing the factorization. To get the old
behavior, you can call lyapchol and dlyapchol
with full(A) instead of A as input.
Linear Simulation Tool no longer supports importing input signals from files
Behavior change
The Linear Simulation Tool no longer supports importing signal values from the following files.
Import from a MAT file
Microsoft® Excel® spreadsheet.
Comma-separated variable file
Text file
Starting in R2026a, to import data from files, first import the data to the MATLAB workspace. You can then import the data into Linear Simulation Tool.
For more information on importing data from files, see Supported File Formats for Import and Export.
Logical values for UseParallel argument not recommended
Still runs
Starting in R2026a, for the following functions, specifying the
UseParallel argument as true or
false is not recommended. Use "off",
"auto", or "on" values instead.
This table shows how to update your code depending on your goal.
| Goal | Not recommended | Recommended |
|---|---|---|
| Write code that runs on the MATLAB client and uses built-in multithreading to make best use of the local resources. | UseParallel=false | UseParallel="off" (default) |
| Write portable code that runs on a parallel pool and, if a pool is not available, runs on the MATLAB client. | UseParallel=true | UseParallel="auto" |
| Write code that runs on a parallel pool and errors if a pool is not available. | N/A | UseParallel="on" |
Unified input and output behavior for Control System Toolbox blocks in Simulink
Behavior change
Control System Toolbox blocks in Simulink® now have consistent input and output port behavior and validation. In particular:
Output ports that can generate scalar or vector signals now output 1-D array signals. Previously, blocks output a mixture 1-D arrays, 2-D arrays, and inherited signals.
Data input ports to the same block must now must now have the same data type. Therefore, you must explicitly resolve data type differences outside of the block. Previously, you could use different data types, relying on Simulink to resolve data type differences.
Discrete-time blocks support only double or single input data ports. Previously, you could connect these ports to integer or fixed-point signals. Continuous-time blocks continue to support only double input data ports.
In most cases, you will not notice any behavior differences in your models. If a block in your model does encounter an issue due to this change, follow the corrective action suggested by the corresponding error message.