|
| 1 | +.. currentmodule:: control |
| 2 | + |
| 3 | +.. _version-0.10.0: |
| 4 | + |
| 5 | +Version 0.10.0 Release Notes |
| 6 | +---------------------------- |
| 7 | + |
| 8 | +* Released: 31 March 2024 |
| 9 | +* `GitHub release page |
| 10 | + <https://github.com/python-control/python-control/releases/tag/0.10.0>`_ |
| 11 | + |
| 12 | +This release changes the interface for plotting to use a |
| 13 | +``_response/_plot`` calling pattern, adds multivariable interconnect |
| 14 | +functionality, restructures I/O system classes, and adds the `norm` |
| 15 | +(now `system_norm`) function to compute input/output system norms. |
| 16 | +Support for the NumPy `~numpy.matrix` class has been removed. |
| 17 | + |
| 18 | +This version of `python-control` requires Python 3.10 and higher. |
| 19 | + |
| 20 | + |
| 21 | +New classes, functions, and methods |
| 22 | +................................... |
| 23 | + |
| 24 | +The following new classes, functions, and methods have been added in |
| 25 | +this release: |
| 26 | + |
| 27 | +* `time_response_plot`, `TimeResponseData.plot`: Plot simulation |
| 28 | + results for time response functions. |
| 29 | + |
| 30 | +* `InterconnectedSystem.connection_table`: Print out a table of each |
| 31 | + signal name, where it comes from (source), and where it goes |
| 32 | + (destination), primarily intended for systems that have been |
| 33 | + connected implicitly. |
| 34 | + |
| 35 | +* `nyquist_response`, `NyquistResponseData`: Compute the Nyquist curve |
| 36 | + and store in an object that can be used to retrieve information |
| 37 | + (e.g., `~NyquistResponseData.count`) or for plotting (via |
| 38 | + the `~NyquistResponseData.plot` method). |
| 39 | + |
| 40 | +* `describing_function_response`, `DescribingFunctionResponse`: Compute |
| 41 | + describing functions and store in a form that can be used for |
| 42 | + analysis (e.g., `~DescribingFunctionResponse.intersections`) or plotting |
| 43 | + (via `describing_function_plot` or the |
| 44 | + `~DescribingFunctionResponse.plot` method). |
| 45 | + |
| 46 | +* `gangof4_response`, `gangof4_plot`: Compute the Gang of Four |
| 47 | + response and store in a `FrequencyResponseData` object for plotting. |
| 48 | + |
| 49 | +* `singular_values_response`: Compute the Gang of Four response and store in a |
| 50 | + `FrequencyResponseData` object for plotting. |
| 51 | + |
| 52 | +* `FrequencyResponseData.plot`: Plot a frequency response using a Bode, |
| 53 | + Nichols, or singular values plot. |
| 54 | + |
| 55 | +* `pole_zero_map`, `PoleZeroData`: New "response" (map) functions for |
| 56 | + pole/zero diagrams. The output of `pole_zero_map` can be plotted |
| 57 | + using `pole_zero_plot` or the `~PoleZeroData.plot` method. |
| 58 | + |
| 59 | +* `root_locus_map`: New "response" (map) functions for root locus |
| 60 | + diagrams. The output of `root_locus_map` can be plotted using |
| 61 | + `root_locus_plot` or the `~PoleZeroData.plot` method. |
| 62 | + |
| 63 | +* `norm` (now `system_norm`): Compute H2 and H-infinity system norms. |
| 64 | + |
| 65 | +* `phase_plane_plot`: New implementation of phase |
| 66 | + plane plots. See :ref:`phase-plane-plots` for more information. |
| 67 | + |
| 68 | + |
| 69 | +Bug fixes |
| 70 | +......... |
| 71 | + |
| 72 | +The following bugs have been fixed in this release: |
| 73 | + |
| 74 | +* `sample_system`: Fixed a bug in which the zero frequency (DC) gain |
| 75 | + for the 'matched' transformation was being computed incorrectly. |
| 76 | + |
| 77 | +* `TimeResponseData.to_pandas`: Fixed a bug when the response did not |
| 78 | + have state data. |
| 79 | + |
| 80 | + |
| 81 | +Improvements |
| 82 | +............ |
| 83 | + |
| 84 | +The following additional improvements and changes in functionality |
| 85 | +were implemented in this release: |
| 86 | + |
| 87 | +* `interconnect`: Allows a variety of "multivariable" specifications |
| 88 | + for connections, inputs, and outputs when systems have variables |
| 89 | + with names of the form 'sig[i]'. |
| 90 | + |
| 91 | +* `nlsys`: Factory function for `NonlinearIOSystem`. |
| 92 | + |
| 93 | +* Block diagram functions (`series`, `parallel`, `feedback`, `append`, |
| 94 | + `negate`) now work on all I/O system classes, including nonlinear |
| 95 | + systems. |
| 96 | + |
| 97 | +* Simulation functions (`initial_response`, `step_response`, |
| 98 | + `forced_response`) will now work for nonlinear functions (via an |
| 99 | + internal call to `input_output_response`). |
| 100 | + |
| 101 | +* Bode and Nyquist plots have been significantly enhanced in terms of |
| 102 | + functionality for display multiple tracing and other visual |
| 103 | + properties. See `bode_plot` and `nyquist_plot` for details, along |
| 104 | + with the :ref:`response-chapter` chapter. |
| 105 | + |
| 106 | +* Properties of frequecy plots can now be set using the |
| 107 | + `config.defaults['freqplot.rcParams']` (see |
| 108 | + :ref:`package-configuration-parameters` for details). |
| 109 | + |
| 110 | +* `create_statefbk_iosystem`: Allows passing an I/O system instead of |
| 111 | + the a gain (or gain schedule) for the controller. |
| 112 | + |
| 113 | +* `root_locus_plot`: Interactive mode is now enabled, so clicking on a |
| 114 | + location on the root locus curve will generate markers at the |
| 115 | + locations on the loci corresponding to that gain and add a message |
| 116 | + above the plot giving the frequency and damping ratio for the point |
| 117 | + that was clicked. |
| 118 | + |
| 119 | +* `gram`: Computation of Gramians now supports discrete-time systems. |
| 120 | + |
| 121 | +* All time response functions now allow the `params` keyword to be |
| 122 | + specified (for nonlinear I/O systems) and the parameter values used |
| 123 | + for generating a time response are stored in the `TimeResponseData` |
| 124 | + object.. |
| 125 | + |
| 126 | + |
| 127 | +Deprecations |
| 128 | +............ |
| 129 | + |
| 130 | +The following functions have been newly deprecated in this release and |
| 131 | +generate a warning message when used: |
| 132 | + |
| 133 | +* `connect`: Use `interconnect`. |
| 134 | + |
| 135 | +* `ss2io`, `tf2io`: These functions are no longer required since the |
| 136 | + `StateSpace` and `TransferFunction` classes are now subclasses of |
| 137 | + `NonlinearIOSystem`. |
| 138 | + |
| 139 | +* `root_locus_plot`, `sisotool`: the `print_gain` keyword has been |
| 140 | + replaced `interactive`. |
| 141 | + |
| 142 | +* In various plotting routines, the (already deprecated) `Plot` |
| 143 | + keyword is now the (still deprecated) `plot` keyword. This can be |
| 144 | + used to obtain legacy return values from ``_plot`` functions. |
| 145 | + |
| 146 | +* `phase_plot`: Use `phase_plane_plot` instead. |
| 147 | + |
| 148 | +The listed items are slated to be removed in future releases (usually |
| 149 | +the next major or minor version update. |
| 150 | + |
| 151 | + |
| 152 | +Removals |
| 153 | +........ |
| 154 | + |
| 155 | +The following functions and capabilities have been removed in this release: |
| 156 | + |
| 157 | +* `use_numpy_matrix`: The `numpy.matrix` class is no longer supported. |
| 158 | + |
| 159 | +* `NamedIOSystem`: renamed to `InputOutputSystem` |
| 160 | + |
| 161 | +* `LinearIOSystem`: merged into the `StateSpace` class |
| 162 | + |
| 163 | +* `pole`: use `poles`. The `matlab.pole` function is still available. |
| 164 | + |
| 165 | +* `zero`: use `zeros`. The `matlab.zero` function is still available. |
| 166 | + |
| 167 | +* `timebaseEqual`: use `common_timebase`. |
| 168 | + |
| 169 | +* The `impulse_response` function no longer accepts the `X0` keyword. |
| 170 | + |
| 171 | +* The `initial_response` function no longer accepts the :code:`input` |
| 172 | + keyword. |
| 173 | + |
| 174 | +* The deprecated default parameters 'bode.dB', 'bode.deg', |
| 175 | + 'bode.grid', and 'bode.wrap_phase' have been removed. They should |
| 176 | + be accessed as 'freqplot.dB', 'freqplot.deg', 'freqplot.grid', and |
| 177 | + 'freqplot.wrap_phase'. |
| 178 | + |
| 179 | +* Recalculation of the root locus plot when zooming no longer works |
| 180 | + (you can still zoom in and out, you just don't get a recalculated |
| 181 | + curve). |
| 182 | + |
| 183 | +Code that makes use of the functionality listed above will have to be |
| 184 | +rewritten to work with this release of the python-control package. |
0 commit comments