Version 0.10.0 Release Notes
Released: 31 March 2024
This release changes the interface for plotting to use a
_response/_plot calling pattern, adds multivariable interconnect
functionality, restructures I/O system classes, and adds the norm
(now system_norm) function to compute input/output system norms.
Support for the NumPy matrix class has been removed.
This version of python-control requires Python 3.10 and higher.
New classes, functions, and methods
The following new classes, functions, and methods have been added in this release:
time_response_plot,TimeResponseData.plot: Plot simulation results for time response functions.InterconnectedSystem.connection_table: Print out a table of each signal name, where it comes from (source), and where it goes (destination), primarily intended for systems that have been connected implicitly.nyquist_response,NyquistResponseData: Compute the Nyquist curve and store in an object that can be used to retrieve information (e.g.,count) or for plotting (via theplotmethod).describing_function_response,DescribingFunctionResponse: Compute describing functions and store in a form that can be used for analysis (e.g.,intersections) or plotting (viadescribing_function_plotor theplotmethod).gangof4_response,gangof4_plot: Compute the Gang of Four response and store in aFrequencyResponseDataobject for plotting.singular_values_response: Compute the Gang of Four response and store in aFrequencyResponseDataobject for plotting.FrequencyResponseData.plot: Plot a frequency response using a Bode, Nichols, or singular values plot.pole_zero_map,PoleZeroData: New “response” (map) functions for pole/zero diagrams. The output ofpole_zero_mapcan be plotted usingpole_zero_plotor theplotmethod.root_locus_map: New “response” (map) functions for root locus diagrams. The output ofroot_locus_mapcan be plotted usingroot_locus_plotor theplotmethod.norm(nowsystem_norm): Compute H2 and H-infinity system norms.phase_plane_plot: New implementation of phase plane plots. See Phase Plane Plots for more information.
Bug fixes
The following bugs have been fixed in this release:
sample_system: Fixed a bug in which the zero frequency (DC) gain for the ‘matched’ transformation was being computed incorrectly.TimeResponseData.to_pandas: Fixed a bug when the response did not have state data.
Improvements
The following additional improvements and changes in functionality were implemented in this release:
interconnect: Allows a variety of “multivariable” specifications for connections, inputs, and outputs when systems have variables with names of the form ‘sig[i]’.nlsys: Factory function forNonlinearIOSystem.Block diagram functions (
series,parallel,feedback,append,negate) now work on all I/O system classes, including nonlinear systems.Simulation functions (
initial_response,step_response,forced_response) will now work for nonlinear functions (via an internal call toinput_output_response).Bode and Nyquist plots have been significantly enhanced in terms of functionality for display multiple tracing and other visual properties. See
bode_plotandnyquist_plotfor details, along with the Input/Output Response and Plotting chapter.Properties of frequecy plots can now be set using the
config.defaults['freqplot.rcParams'](see Package Configuration Parameters for details).create_statefbk_iosystem: Allows passing an I/O system instead of the a gain (or gain schedule) for the controller.root_locus_plot: Interactive mode is now enabled, so clicking on a location on the root locus curve will generate markers at the locations on the loci corresponding to that gain and add a message above the plot giving the frequency and damping ratio for the point that was clicked.gram: Computation of Gramians now supports discrete-time systems.All time response functions now allow the
paramskeyword to be specified (for nonlinear I/O systems) and the parameter values used for generating a time response are stored in theTimeResponseDataobject..
Deprecations
The following functions have been newly deprecated in this release and generate a warning message when used:
connect: Useinterconnect.ss2io,tf2io: These functions are no longer required since theStateSpaceandTransferFunctionclasses are now subclasses ofNonlinearIOSystem.root_locus_plot,sisotool: theprint_gainkeyword has been replacedinteractive.In various plotting routines, the (already deprecated)
Plotkeyword is now the (still deprecated)plotkeyword. This can be used to obtain legacy return values from_plotfunctions.phase_plot: Usephase_plane_plotinstead.
The listed items are slated to be removed in future releases (usually the next major or minor version update).
Removals
The following functions and capabilities have been removed in this release:
use_numpy_matrix: Thenumpy.matrixclass is no longer supported.NamedIOSystem: renamed toInputOutputSystemLinearIOSystem: merged into theStateSpaceclasspole: usepoles. Thematlab.polefunction is still available.zero: usezeros. Thematlab.zerofunction is still available.timebaseEqual: usecommon_timebase.The
impulse_responsefunction no longer accepts theX0keyword.The
initial_responsefunction no longer accepts theinputkeyword.The deprecated default parameters ‘bode.dB’, ‘bode.deg’, ‘bode.grid’, and ‘bode.wrap_phase’ have been removed. They should be accessed as ‘freqplot.dB’, ‘freqplot.deg’, ‘freqplot.grid’, and ‘freqplot.wrap_phase’.
Recalculation of the root locus plot when zooming no longer works (you can still zoom in and out, you just don’t get a recalculated curve).
Code that makes use of the functionality listed above will have to be rewritten to work with this release of the python-control package.