Version 0.10.1 Release Notes
Released: 17 Aug 2024
This release provides a number of updates to the plotting functions to
make the interface more uniform between the various types of control
plots (including the use of the ControlPlot object as the return
type for all _plot functions, adds slice access for state space
models, includes new tools for model identification from data, as well
as compatibility with NumPy 2.0.
New functions
The following new functions have been added in this release:
hankel_singular_values: renamedhsvd, with a convenience alias available for backwards compatibility.balanced_reduction: renamedbalred, with a convenience alias available for backwards compatibility.model_reduction: renamedmodred, with a convenience alias available for backwards compatibility.minimal_realization: renamedminreal, with a convenience alias available for backwards compatibility.eigensys_realization: new system ID method, with a convenience aliaseraavailable.All plotting functions now return a
ControlPlotobject with lines, axes, legend, etc available. Accessing this object as a list is backward compatible with 10.0 format (with deparecation warning).
Bug fixes
The following bugs have been fixed in this release:
Fixed bug in
matlab.rlocuswherekvectwas being used instead ofgains. Also allowroot_locus_plotto processkvectsas a legacy keyword.Fixed a bug in
nyquist_plotwhere it generated an error if called with aFrequencyResponseDataobject.Fixed a bug in processing
indent_radiuskeyword whennyquist_plotis passed a system.Fixed a bug in
root_locus_plotthat generated an error when you clicked on a point outside the border window.Fixed a bug in
interconnectwhere specification of a list of signals as the input was not handled properly (each signal in the list was treated as a separate input rather than connecting a single input to the list).Fixed a bug in
impulse_responsewhere theinputkeyword was not being handled properly.Fixed bug in
step_infoin computing settling time for a constant system.
Improvements
The following additional improvements and changes in functionality were implemented in this release:
Added support for NumPy 2.
frequency_responsenow properly transfer labels from the system to the response.I/O systems with no inputs and no outputs are now allowed, mainly for use by the
phase_plane_plotfunction.Improved error messages in
input_output_responsewhen the number of states, inputs, or outputs are incompatible with the system size by telling you which one didn’t match.phase_plane_plotnow generate warnings when simulations fail for individual initial conditions and drops individual traces (rather than terminating).Changed the way plot titles are created, using
matplotlib.axes.set_title(centers title over axes) instead ofmatplotlib.fig.suptitle(centers over figure, which is good for multi-axes plots but otherwise looks funny).Updated arrow placement in
phase_plane_plotso that very short lines have zero or one arrows.Subsystem indexing now allows slices as indexing arguments.
The
labelkeyword is now allowed in frequency response commands to override default label generation.Restored functionality that allowed omega to be specified as a list of 2 elements (indicating a range) in all frequency response/plotting routines. This used to work for
nyquist_responsebut got removed at some point. It now works for all frequency response commands.Fixed up the
axkeyword processing to allow arrays or lists + uniform processing in all frequency plotting routines.Fixed processing of
rcParamto provide more uniformity.Added new
ControlPlot.set_plot_titlemethod to set/add titles that are better centered (on axes instead of figure).Set up
frdas factory function with keywords, including setting the signal/system names.Bode and Nyquist plots now allow FRD systems with different omega vectors as well as mixtures of FRD and other LTI systems.
Added unit circle, sensitivity circles, and complementary sensitivity cicles to
nyquist_plot.time_response_plotimprovements:Fixed up the
axkeyword processing to allow arrays or lists + uniform processing for all (time and frequency) plot routines.Allow time responses for multiple systems with common time vector and inputs to find a single time interval.
Updated sequential plotting so that different colors are used and plot title is updated (like Bode and Nyquist).
Allow label keyword in various time response commands to override default label generation.
Allow legends to be turned on and off using
show_legendkeyword.
NonlinearIOSystemimprovements:Allow system name to be overridden in
linearize, even ifcopy_namesisFalse.Allows renaming of system/signal names in bdalg functions
New
update_namesmethod for that allows signal and system names to be updated.x0,u0keywords inlinearizeandinput_output_responseprovide common functionality in allowing concatenation of lists and zero padding (“vector element processing”).Improved error messages when
x0andu0don’t match the expected size.If no output function is given in
nlsys, which provides full state output, the output signal names are set to match the state names.
markovnow supports MIMO systems and accepts aTimeResponseDataobject as input.Processing of the
axandtitlekeywords is now consistent across all plotting functions.Set up uniform processing of the
rcParamskeyword argument for plotting functions (with unit tests).Updated legend processing to be consistent across all plotting functions, as described in the user documention.
Default configuration parameters for plotting are now in
control.rcParamsand can be reset usingreset_rcParams.Unified
colorand*fmtargument processing code, in addition to color management for sequential plotting.
Deprecations
The following functions have been newly deprecated in this release and generate a warning message when used:
Assessing the output of a plotting function to a list is now deprecated. Assign to a
ControlPlotobject and access lines and other elements via attributes.Deprecated the
relabelkeyword intime_response_plot.
The listed items are slated to be removed in future releases (usually the next major or minor version update).