You can subscribe to this list here.
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2011 |
Jan
|
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2019 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2021 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2024 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Richard M. <mu...@cd...> - 2024-08-17 20:21:41
|
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 ([#1034](https://github.com/python-control/python-control/pull/1034)), adds slice access for state space models ([#1012](https://github.com/python-control/python-control/pull/1012)), includes new tools for model identification from data ([#1022](https://github.com/python-control/python-control/pull/1022), [#1024](https://github.com/python-control/python-control/pull/1024)), as well as compatibility with NumPy 2.0 ([#994](https://github.com/python-control/python-control/pull/994)). A number of other smaller enhancements, bug fixes, and updates to documentation and examples are also included. Latest documentation: https://python-control.readthedocs.io/en/0.10.1/ Full list of changes: https://github.com/python-control/python-control/releases/tag/0.10.1 Detailed changelog: https://github.com/python-control/python-control/compare/0.10.0...0.10.1 Many thanks to @ansrandrieu, @bnavigator, @gdmcbain, @guptavaibhav0, @KybernetikJo, @pierre-haessig, @sawyerbfuller, @slivingston, @wueestry, and many others for their contributions! -richard |
From: Richard M. <mu...@cd...> - 2024-03-31 22:42:51
|
This release changes the interface for plotting to use a "response/plot" design pattern ([#920](https://github.com/python-control/python-control/pull/920), [#924](https://github.com/python-control/python-control/pull/924), [#953](https://github.com/python-control/python-control/pull/953)), adds multivariable interconnect functionality ([#881](https://github.com/python-control/python-control/pull/881)), restructures I/O system classes ([#916](https://github.com/python-control/python-control/pull/916)), and adds the norm() function to compute input/output system norms ([#971](https://github.com/python-control/python-control/pull/971)). A number of other smaller enhancements, bug fixes, and updates to documentation and examples are also included. **Note:** This release may break code that was using v0.9.4 or earlier. In addition, the `matrix` class in NumPy is no longer supported, and Python 3.10 or higher is required. Latest documentation: https://python-control.readthedocs.io/en/0.10.0/ Full list of changes: https://github.com/python-control/python-control/releases/tag/0.10.0 Detailed changelog: https://github.com/python-control/python-control/compare/0.9.4...0.10.0 Many thanks to @billtubbs, @bnavigator, @KybernetikJo, @sawyerbfuller, @henriks76, @ilayn, and many others for their contributions! -richard |
From: Murray, R. M. <mu...@cd...> - 2023-06-10 08:43:26
|
Version 0.9.4 adds functions for optimization-based estimation and moving horizon estimation (#877), better handling of system and signal names (#857, #892, #884), as well a number of bug fixes, small enhancements, and updated documentation. Binary installations are available for Linux, Mac, and Windows platforms using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler. Installation via pip is also possible: pip install slycot # optional (requires C and FORTRAN compilers) pip install control Documentation is available at https://python-control.readthedocs.org/ A detailed list of changes can be found here: https://github.com/python-control/python-control/releases/tag/0.9.4 -richard |
From: Murray, R. M. <mu...@cd...> - 2022-12-31 22:47:19
|
Version 0.9.3 adds support for collocation in finding optimal trajectories (#799), adds the ability to compute optimal trajectories for flat systems (#763) adds support for passivity indices and passivity tests for discrete time systems (#750), and includes support for gain scheduling (in create_statefbk_iosystem, #827). Setup is now done using setuptools (pip install . instead of python setup.py install). Installation instructions: pip install slycot # optional pip install control You should get slycot-0.5.3 and python-control-0.9.3.post2. Note that python-control depends on numpy, scipy, and matplotlib and you will need recent versions of all of these packages in order to run v0.9.3. Binary installations are available for Linux, Mac, and Windows platforms using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler. Documentation is available at https://python-control.readthedocs.org/ A detailed list of changes can be found here: https://github.com/python-control/python-control/releases/tag/0.9.3 -richard |
From: Murray, R. M. <mu...@cd...> - 2022-05-28 21:02:54
|
Version 0.9.2 is a minor release that includes I/O system enhancements, optimal control enhancements, new functionality for stochastic systems, updated system class functionality, bug fixes and improvements to Nyquist plots and Nichols charts, and L-infinity norm computation for linear systems, in addition to bug fixes and improvements in documentation/examples. Installation instructions: pip install slycot # optional pip install control You should get slycot-0.4.0.0 and python-control-0.9.2. Note that python-control depends on numpy, scipy, and matplotlib and you will need recent versions of all of these packages in order to run v0.9.2. Binary installations are available for Linux, Mac, and Windows platforms using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler. Documentation is available at https://python-control.readthedocs.org/ A detailed list of changes can be found here: https://github.com/python-control/python-control/wiki/Release-notes#python-control-092-28-may-2022 -richard |
From: Murray, R. M. <mu...@cd...> - 2021-12-31 23:47:15
|
Version 0.9.1 is a minor release that includes new functionality for discrete time systems (dlqr, dlqe, drss), flat systems (optimization and constraints), a new time response data class, and many individual improvements and bug fixes. Installation instructions: pip install slycot # optional pip install control You should get slycot-0.4.0.0 and python-control-0.9.1. Note that python-control depends on numpy, scipy, and matplotlib and you will need recent versions of all of these packages in order to run v0.9.1. Binary installations are available for Linux, Mac, and Windows platforms using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler. Documentation is available at https://python-control.readthedocs.org/ A detailed list of changes is appended below. -richard New features: * Add optimization to flat systems trajectory generation (#569 by murrayrm) * Return a discrete time system with drss() (#589 by bnavigator) * A first implementation of the singular value plot (#593 by forgi86) * Include InfValue into settling min/max calculation for step_info (#600 by bnavigator) * New time response data class (#649 by murrayrm) * Check for unused subsystem signals in InterconnectedSystem (#652 by roryyorke) * New PID design function built on sisotool (#662 by sawyerbfuller) * Modify discrete-time contour for Nyquist plots to indent around poles (#668 by sawyerbfuller) * Additional I/O system type conversions (#672 by murrayrm) * Remove Python 2.7 support and leverage @ operator (#679 by bnavigator) * Discrete time LQR and LQE (#670 by sawyerbfuller, murrayrm) Improvements, bug fixes: * Change step_info undershoot percentage calculation (#590 by juanodecc) * IPython LaTeX output only generated for small systems (#607 by roryyorke) * Fix warnings generated by sisotool (#608 by roryyorke) * Discrete time LaTeX repr of StateSpace systems (#609 by bnavigator) * Updated rlocus.py to remove warning by sisotool() with rlocus_grid=True (#616 by nirjhar-das) * Refine automatic contour determination in Nyquist plot (#620 by bnavigator) * Fix damp method for discrete time systems with a negative real-valued pole (#647 by vincentchoqueuse) * Plot Nyquist frequency correctly in Bode plot in Hz (#651 by murrayrm) * Return frequency response for 0 and 1-state systems directly (#663 by bnavigator) * Fixed prewarp not working in c2d and sample_system, margin docstring improvements (#669 by sawyerbfuller) * Improved lqe calling functionality (#673 by murrayrm) * Vectorize FRD feedback function (#680 by bnavigator) * BUG: extrapolation in ufun throwing errors (#682 by miroslavfikar) * Allow use of SciPy for LQR, LQE (#683 by murrayrm) * Improve forced_response and its documentation (#588 by bnavigator) * Add documentation about use of axis('equal') in pzmap, rlocus (#685 by murrayrm) Additional changes: * Replace Travis badge with GHA workflows, add PyPI and conda badges (#584 by bnavigator) * Don't install toplevel benchmarks package (#585 by bnavigator) * LTI squeeze: ndarray.ndim == 0 is also a scalar (#595 by bnavigator) * xfail testmarkovResults until #588 is merged (#601 by bnavigator) * Remove from readme.rst that you need a fortran compiler (#602 by sawyerbfuller) * Remove statement that slycot only on linux (#603 by sawyerbfuller) * Allow float precision in result assertions (#615 by bnavigator) * Improved unit test coverage for root_locus: dtime and sisotool (#617 by bnavigator) * Add DefaultDict for deprecation handling (#619 by bnavigator) * Documentation updates (#633 by murrayrm) * Various docstring edits + fixed plot legends on cruise control example (#643 by billtubbs) * Ease test tolerance on timeseries (#659 by bnavigator) * Use conda-forge for numpy (CI fix) (#667 by bnavigator) * Fix doc escape (#674 by bnavigator) * Remove duplicate Slycot error handling, require Slycot >=0.4 (#678 by bnavigator) Full list of merged PRs: https://github.com/python-control/python-control/pulls?utf8=%E2%9C%93&q=is%3Amerged+milestone%3A0.9.1 |
From: Murray, R. M. <mu...@cd...> - 2021-03-20 18:54:42
|
Version 0.9.0 of the Python Control Toolbox (python-control) contains a number of enhanced features and changes to functions. Some of these changes may require modifications to existing user code and, in addition, some default settings have changed that may affect the appearance of plots or operation of certain functions. In addition, Python 2.7 is no longer supported; you should use Python 3.7 or higher. Significant new additions including improvements in the I/O systems modules that allow automatic interconnection of signals having the same name (via the interconnect function), generation and plotting of describing functions for closed loop systems with static nonlinearities, and a new optimal control module that allows basic computation of optimal controls (including model predictive controllers). Some of the changes that may break use code include the deprecation of the NumPy matrix type (2D NumPy arrays are used instead), changes in the return value for Nyquist plots (now returns number of encirclements rather than the frequency response), switching the default timebase of systems to be 0 rather than None (no timebase), and changes in the processing of return values for time and frequency responses (to make them more consistent). In many cases, the earlier behavior can be restored by calling use_legacy_defaults('0.8.4'). A full list of additions and changes is described below. Installation instructions: pip install slycot # optional pip install control You should get slycot-0.4.0.0 and python-control-0.9.0. In order to install slycot via pip you will need to have a Fortran compiler on your system. Note that python-control depends on numpy, scipy, and matplotlib and you will need recent versions of all of these packages in order to run v0.9.0. Binary installations are available for Linux, Mac, and Windows platforms using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler. Documentation is available at https://python-control.readthedocs.org/ A detailed list of changes is appended below. -richard New features * Optimal control module, including rudimentary MPC control (#549 by murrayrm) * Describing functions plots (#521 by murrayrm) * MIMO impulse and step response (#514 by murrayrm) * I/O system improvements: - linearize() retains signal names plus new interconnect() function (#497 by murrayrm) - Add summing junction + implicit signal interconnection (#517 by murrayrm) * Implementation of initial_phase, wrap_phase keywords for bode_plot (#494 by murrayrm) * Added IPython LaTeX representation method for StateSpace objects (#450 by roryyorke) * New dynamics() and output() methods in StateSpace (#566 by sawyerbfuller) * FRD systems can now be created from a discrete time LTI system (#568 by bnavigator) * Cost and constraints are now allowed for flatsys.point_to_point() (#569 by murrayrm) Interface changes * Switch default state space matrix type to 'array' (instead of 'matrix') (#480 by murrayrm, #486 by bnavigator, #433 by sawyerbfuller) * Use __call__ instead of evalfr in lti system classes (#449 by sawyerbfuller) * Default dt is now 0 instead of None (#431 by sawyerbfuller, #490 by bnavigator) * Change default value of statesp.remove_useless_states to False (#509 by murrayrm) * Standardize time response return values, return_x/squeeze keyword processing (#511 by murrayrm) * Standardize squeeze processing in frequency response functions (#507 by murrayrm) * Nyquist plot now returns number of encirclements (#534 by murrayrm) * Switch LTI class and subclasses to use ninputs, noutputs, nstates (#515 by murrayrm) * Use standard time series convention for markov() input data (#508 by murrayrm) * TransferFunction array priority plus system type conversion checking (#498 by murrayrm) * Generate error for tf2ss of non-proper transfer function (#492 by murrayrm) * Updated return values for frequency response evaluated at poles (#542 by murrayrm) Improvements, bug fixes * Nyquist plot improvements: better arrows, handle poles on imaginary axis (#534 by murrayrm) * Sisotool small visual cleanup, new feature to show step response of different input-output than loop 531 by sawyerbfuller) * Add bdschur() and fox modal form with repeated eigenvalues (#495 by roryyorke) * Fix rlocus timeout due to inefficient _default_wn calculation (#527 by murrayrm) * Fix #523: finding z for |H(z)|=1 computed the wrong polynomials (#525 by bnavigator) * Freqplot improvements (#522 by sawyerbfuller) * Fix rlocus plotting problem in Jupyter notebooks (#503 by murrayrm) * Handle empty pole vector for timevector calculation (#485 by bnavigator) * Fix lqe() docstring and input array type (#483 by bnavigator) * Updated markov() to add tranpose keyword + default warning (#478 by murrayrm) * Fix impulse size for discrete-time impulse response (#447 by sawyerbfuller) * Extend returnScipySignalLTI() to handle discrete-time systems (#445 by bnavigator) * Bug fixes and extensions for step_info() (#555 by sawyerbfuller, #567 by juanodecc, #577 by bnavigator) Additional changes * Address NumPy deprecations np.int, np.float (#539 by dapperfu, #548 by murrayrm) * Shift CI tests from Travis CI to GitHub Actions (#504 by murrayrm) * Link to developer wiki in docs. (#502 by sawyerbfuller) * Reduce Python 3 testing to speed up Travis CI testing (#487 by murrayrm) * Refactor the test suite using pytest for array and matrix types (#438 by bnavigator) |
From: Murray, R. M. <mu...@cd...> - 2020-12-29 03:14:10
|
Version 0.8.4 of the python-control toolbox is now available for download on GitHub, as well as via pip and conda. This version contains improvements in calculation of default values for time responses as well as improvements for discrete-time systems. There are also many other individual additions and improvements throughout the code and documentation. A detailed list of changes is appended to the bottom of this message. Note: this is the last planned release in the 0.8.x series. Starting with release 0.9.0, we will be making some changes that could break user code, including deprecating the use of the numpy.matrix type for state space objects and (gradually) removing support for Python 2.7. More details in https://github.com/python-control/python-control/issues/451. Installation instructions: pip install slycot # optional pip install control You should get slycot-0.4.0.0 and python-control-0.8.4. In order to install slycot via pip you will need to have a Fortran compiler on your system. Note that python-control depends on numpy, scipy, and matplotlib and you will need recent versions of all of these packages in order to run v0.8.4. Binary installations are available for Linux, Mac, and Windows platforms using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler. (Note: if you try this an get version 0.8.3, trying using Documentation is available at https://python-control.readthedocs.org/ A detailed list of changes is appended below. -richard This release introduces several new features as well as bug fixes and documentation improvements: * Improved default time vector for time response functions (bnavigator, sawyerbfuller) * New use_legacy_defaults function to allow compatibility with previous versions (sawyerbfuller) * Allow creation of non-proper transfer functions (bnavigator, rlegnain) * Added ability to set arrow head length and width option in nyquist_plot (geekonloose) * Added ability to 'prewarp' the conversion of continuous to discrete-time systems (sawyerbfuller) * Added rlocus capability for discrete-time systems (sawyerbfuller) * Updated pzmap grid to be compatible with matplotlib updates (bnavigator) * Implement loadable string representation (repr) for tf, ss, and frd (repagh) * Fixed margin computation for discrete time systems (bnavigator) * Fixed indexing bug in bdalg.connect (sawyerbfuller) * Fixed InterconnectedSystem naming bugs, improved conventions (samlaf) * Fixed LinearIOSystem output bug in output function (francescoseccamonte) * Fixed bug in forced_response that overrode squeeze parameter (bnavigator) * Use rad/sec for Bode plot in MATLAB bode (was erroneously defaulting to Hertz) (paulvicioso) * Removed deprecated scipy calls and updated to latest numpy (bnavigator) * Multiple documentation updates (bnavigator, laurensvalk) * New and improved examples for sisotool, pvtol (repagh, samlaf) * The rlocus function no longer automatically creates a new figure * Updated unit tests + switch to pytest (bnavigator, sawyerbfuller) * Return type for eigenvalues in lqe changed to 1D array (matches lqr) * Small fixes + documentation updates to markov More info: https://github.com/python-control/python-control/releases/tag/0.8.4 |
From: Rory Y. <ror...@gm...> - 2020-05-31 06:51:40
|
Hi, Slycot 0.4.0 has been released. Source can be obtained directly from Github [1], or via pip from PyPI. Binaries for GNU/Linux, Windows, macOS are available on conda-forge. Note that binaries are only available for 64-bit systems. Release notes below. Thanks to everyone who contributed! Regards, Rory [1] https://github.com/python-control/Slycot/releases/tag/v0.4.0 Slycot 0.4.0 release notes (also at [1]) # New features ## Added periodic Schur decomposition functions `mb03vd`, `mb03vy`, and `mb03wd` Contributed by @bnavigator via pull request #88. ## Added `ab08nz`, allowing one to find zeros of complex-valued state-space models Contributed by @lytex and @bnavigator via pull request #96. ## Added `mb03rd`, Schur to block-diagonal transform Contributed by @bnavigator and @repagh via pull request #116. ## Added `sb01fd` H-infinity solver Contributed by @repagh via #118. Already present `sb10ad` searches for a minimum gamma value for a given H-infinity problem; sb10fd, by contrast, only attempts to solve for a given gamma value. This can be used to test for admissible gamma values, which could be useful for problems like python-control/python-control#367. ## New Slycot exception hierarchy @bnavigator, with support from @repagh, greatly improved Slycot error handling. Slycot routines now raise `SlycotValueError` where they would previously have raised `ValueError`, and `SlycotArithmeticError` where they would have raised `ArithmeticError`. These changes are backwardly compatible: `SlycotValueError` is a subclasss of `ValueError`, and `SlycotArithmeticError` is a subclass of `ArithmeticError`. As part of this, many of the Slycot function docstrings were changed to conform to numpydoc conventions. This supersedes an earlier fix for python-control#347 made during 0.4.0 development. ## Override XERBLA In #128, with extra testing in #130, @bnavigator overrode the BLAS error function `XERBLA` that SLICOT routines use to report errors; the BLAS-provided `XERBLA` can terminate the whole Python process. # Fixes ## Correct application of DGEBAL in TB01TD and TB05AD @repagh fixed long-standing #11 with PR #122. ## Fixed ab01nd for jobz='N' case @bnavigator contributed this fix in #129. # Build Contributed by @bnavigator, @repagh, and @rabraker: - conda build recipes no longer use pip - added conda recipes for MKL and Apple - removed conda recipes for Windows; no developer is using them, and they weren't working - general simplifications and improvements of build - the signature files (`.pyf` files) are now a dependency of wrapper generation # Testing Contributed by @bnavigator and @lytex: - Tests added for `mb05nd`, `mc01td`, `ab08nd`, `ab08nz`, `mb03vd`, `mb03vy`, `mb03wd`. - Tests fixed or expanded for `mb05md`, `sg03ad`, `td04ad`. - Switched to pytest; Slycot CI now uses pytest for both the Slycot and python-control test suites. - CI now builds and tests for Linux and macOS. The Linux builds include OpenBLAS and MKL variants. - Examples are run as part of tests. Outputs are not checked, but errors and warnings are. - CI coveralls.io integration fixed. - General test clean-up. - Test files are no longer executable. # Other changes @bnavigator contributed many other code improvements: - Fix for `mb05nd`. - Lots of clean-up: removal of unused mathematical.pyf, many docstring fixes, and some PEP 8 conformance changes to Python code. - Fix for Fortran-compiler dependence on machine value used to represent logical values `.TRUE.` and `.FALSE.` @repagh fired up his time machine and ensured punch-card compatibility of the SLICOT Fortran code by limiting line lengths to 72 characters. # Pull requests and issues associated with the release PRs merged: #71, #72, #75, #78, #91, #93, #79, #82, #83, #84, #87, #88, #96, #97, #101 , #103, #104, #105, #110, #114, #115, #116, #117, #118, #120, #121, #122, #124, #125, #128, #129, #130, #132, #133 Issues fixed: #11, #76, #86, #44, #102, #106, #119, #126 Issues closed ("wont-fix"): #46, #94, #99, #111 |
From: Murray, R. M. <mu...@cd...> - 2020-01-04 22:22:06
|
Version 0.8.3 of the python-control toolbox is now available for download on GitHub, as well as via pip and conda. This version adds two new modules: (1) an input/output systems module that allows simulation and linearization of (nonlinear) systems constructed from subsystems using named signals and (2) a module for trajectory generation using differential flatness. There are also many other individual additions and improvements throughout the code and documentation. A detailed list of changes is appended to the bottom of this message. Installation instructions: pip install slycot # optional pip install control You should get slycot-0.3.5 and python-control-0.8.3. In order to install slycot via pip you will need to have a Fortran compiler on your system. Note that python-control depends on numpy, scipy, and matplotlib and you will need recent versions of all of these packages in order to run v0.8.3. Binary installations are available for Linux, Mac, and Windows platforms using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler. Documentation is available at http://python-control.readthedocs.org/ A detailed list of changes is appended below. -richard Changes since the previous release (0.8.2 → 0.8.3): * New input/output systems module for creating nonlinear systems from individual I/O subsystems, with `find_eqpt`, `input_output_response`, and `linearize` functionality * Initial implementation of differential flatness module for computing feasible trajectories for differentially flat (nonlinear) systems * Preliminary version of lqe function (sawyerbfuller) * New dict-based implementation of user-configurable package/module configuration parameters * Added similarity transformation function * Add 's' and 'z' variable support to tf() * Fixed discrete time simulation time step issue * Reordered Gang of Four plots to match FBS * Check for symmetric matrices with machine precision (bnavigator) * Changed root precision tolerance and imaginary detection in `xferfcn._common_den` (bnavigator) * Fixed bug in timeresp.forced_response (adm78) * Improved latex representation for exp format and multi-digit exponents of s or z (bnavigator) * Renamed `FRD` class name `FrequencyResponseData` to fix MacOS sphinx build problems (`FRD` still defined for backward compatibility` * Allow np.array or np.matrix for state space matrices, operations via `use_numpy_matrix` * Improved detection of when to add additional points in `root_locus` * Adaptive gain click criterion and zoom bug fix for `root_locus` (icam0) * Improved code for ctrb and obsv (billtubbs) * Documentation updates (bnavigator, murrayrm, roryyorke) * Updated examples to be PEP compliant * Improved unit tests (bnavigator, murrayrm), increased coverage to ~80% More info: https://github.com/python-control/python-control/releases/tag/0.8.3 |
From: Rory Y. <ror...@gm...> - 2019-05-03 18:51:39
|
Slycot 0.3.4 has been released on Github [1], uploaded to PyPI, and should be available from conda shortly, via the conda-forge channel [2]. Thanks to everyone who contributed! [1] https://github.com/python-control/Slycot/releases/tag/v0.3.4 [2] `conda install -c conda-forge slycot` # New features Support for four SLICOT routines was added by Marcus Liljedahl. ## ag08bd Process system pencil to find multivariable zeros ag08bd takes a system pencil (E,A,B,C,D) and returns a matrix pair (Af, Ef) which can be used to find the finite multivariable ("Smith") zeros. The orders of infinite zeros, right and left Kronecker indices, and multiplicities of infinite eigenvalues are also returned. ## sb10jd Convert descriptor to non-descriptor form sb10jd converts a descriptor state-space system (E,A,B,C,D) to a regular state-space system (Ad, Bd, Cd, Dd). ## tg01ad Balance system pencil tg01ad balances system pencils (E,A,B,C,D), with D=0, such that the rows and columns of the resulting pencil are as close in norm as possible. ## tg01fd SVD-like coordinate form of system pencil tg01fd finds the orthogonal transformation matrices for a system pencil (E,A,B,C,D), with D=0, such that the result is in SVD-like coordinate form. # Build Rene van Paassen switched the build over to scikit-build, which allows for flang to be used to build SLICOT on Windows, and improves the build output for developers. # Testing Python 3.7 was added to the Travis CI build set. The tests no longer use the deprecated np.matrix type. Added a regression test for #6, for td04ad. # Pull requests and issues associated with the release (numbers refer to Github issues and PRs). PRs merged: #32, #34, #36, #38, #43, #45, #51, #52, #53, #56, #57 Issues fixed: #35, #37, #47, #55 Issues closed ("wont-fix"): #40, #41, #48 |
From: Murray, R. M. <mu...@cd...> - 2019-04-20 17:26:28
|
Version 0.8.2 of the python-control toolbox is now available for download on GitHub, as well as via pip and conda. This is mainly a maintenance release with lots of small bug fixes and performance improvements, plus a few new features (dynamic sisotool, latex output for state space systems in Jupyter notebooks, step_info, etc). A short list of changes is appended to the bottom of this message. Installation instructions: pip install slycot # optional pip install control You should get slycot v0.3.3 and python-control v0.8.2. In order to install slycot via pip you will need to have a Fortran compiler on your system. Note that python-control depends on numpy, scipy, and matplotlib. Binary installations are available using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler (support for Windows builds of slycot are coming soon; stay tuned…). Documentation is available at http://python-control.readthedocs.org/ NOTE FOR MacOS USERS: There are some issues with the way that the matplotlib backend works and some people (including me -:) have noticed crashes with the default settings using conda downloads. This appears to be a matplotlib/MacOS issue, which you can fix it by setting the MPLBACKEND environment variable to TkAgg export MPLBACKEND="TkAgg” More info here: https://matplotlib.org/faq/osx_framework.html -richard * Fixed a number of small bugs , including discrete time simulations (bnavigator), integer values in state space matrics (don4get), missing zeros on pole/zero plots (Sup3rGeo) * First cut at a new step_info() function, similar to MATLAB (joaoantoniocardoso) * Added a new function for dynamically setting gain in sisotool (icam0) * Anti-stabilizing solutions for Riccati equations are now available (dbacc) * Printout out state space systems in Jupyter notebooks now formats using LaTeX (alchemyst) * Additional performance and visualiation improvements: _remove_useless_states (adm78), margins on Bode plots ( icam0), improved damping lines in discrete pzmap (Sup3rGeo) * List of all changes in this release: https://github.com/python-control/python-control/compare/0.8.1...0.8.2 * Special thanks to Jason Moore (moorepants) for help with debugging the conda-forge recipe. |
From: Murray, R. M. <mu...@cd...> - 2019-04-20 17:18:45
|
Version 0.8.2 of the python-control toolbox is now available for download on GitHub, as well as via pip and conda. This is mainly a maintenance release with lots of small bug fixes and performance improvements, plus a few new features (dynamic sisotool, latex output for state space systems in Jupyter notebooks, step_info, etc). A short list of changes is appended to the bottom of this message. Installation instructions: pip install slycot # optional pip install control You should get slycot v0.3.3 and python-control v0.8.2. In order to install slycot via pip you will need to have a Fortran compiler on your system. Note that python-control depends on numpy, scipy, and matplotlib. Binary installations are available using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler (support for Windows builds of slycot are coming soon; stay tuned…). Documentation is available at http://python-control.readthedocs.org/ NOTE FOR MacOS USERS: There are some issues with the way that the matplotlib backend works and some people (including me -:) have noticed crashes with the default settings using conda downloads. This appears to be a matplotlib/MacOS issue, which you can fix it by setting the MPLBACKEND environment variable to TkAgg export MPLBACKEND="TkAgg” More info here: https://matplotlib.org/faq/osx_framework.html -richard * Fixed a number of small bugs , including discrete time simulations (bnavigator), integer values in state space matrics (don4get), missing zeros on pole/zero plots (Sup3rGeo) * First cut at a new step_info() function, similar to MATLAB (joaoantoniocardoso) * Added a new function for dynamically setting gain in sisotool (icam0) * Anti-stabilizing solutions for Riccati equations are now available (dbacc) * Printout out state space systems in Jupyter notebooks now formats using LaTeX (alchemyst) * Additional performance and visualiation improvements: _remove_useless_states (adm78), margins on Bode plots ( icam0), improved damping lines in discrete pzmap (Sup3rGeo) * List of all changes in this release: https://github.com/python-control/python-control/compare/0.8.1...0.8.2 * Special thanks to Jason Moore (moorepants) for help with debugging the conda-forge recipe. |
From: Murray, R. M. <mu...@cd...> - 2018-12-23 18:15:09
|
Version 0.8.1 of the python-control toolbox is now available for download on GitHub, as well as via pip and conda. A short list of changes is appended to the bottom of this message. Installation instructions: pip install slycot # optional pip install control You should get slycot v0.3.0 and python-control v0.8.1. In order to install slycot via pip you will need to have a Fortran compiler on your system. Note that python-control depends on numpy, scipy, and matplotlib. Binary installations are available for Linux and Mac platforms using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler. (Unfortunately, conda-forge does not yet support Fortran for Windows builds => you have to install from source.) Documentation is available at http://python-control.readthedocs.org/ Thanks to -richard Changes since previous release (0.8.0): This release fixes a number of small issues and adds a few new features: * A new canonical function modal_form can be used to convert a state space system to modal form (ipa-lth) * Improved pole placement algorithm place_varga (rabraker) * Bug fix in computing poles of MIMO transfer functions (murrayrm) * Indexing of MIMO transfer functions (hungpham2511) * Additional small bug fixes (adm78, stertingen) * Documentation updates and fixes (joaoantoniocardoso, murrayrm) * List of all changes in this release: https://github.com/python-control/python-control/compare/0.8.0...0.8.1 |
From: Richard M. <mu...@cd...> - 2018-07-08 14:45:29
|
Version 0.8.0 of the python-control toolbox is now available for download on GitHub, as well as via pip and conda. A short list of changes is appended to the bottom of this message. Installation instructions: pip install slycot # optional pip install control You should get slycot v0.3.0 and python-control v0.8.0. In order to install slycot via pip you will need to have a Fortran compiler on your system. Note that python-control depends on numpy, scipy, and matplotlib. Binary installations are available for Linux and Mac platforms using conda and conda-forge: conda install -c conda-forge control Slycot should be installed automatically, without the need for a Fortran compiler. (Unfortunately, conda-forge does not yet support Fortran for Windows builds => you have to install from source.) Documentation is available at http://python-control.readthedocs.org/ Thanks to Jason Moore, Rene van Paassen, Rory Yorke, Yuichi Nagayama, Mitchell Clement, Kurt Sansom, Jed Frey, gonmolina, Alessio Russo, Joseph Slater, Lorenz Halt, Tyler Veness and others who contributed to this release. -richard Changes since previous release (0.7.0): * Updated and corrected docstrings * Better support for MIMO systems in `pole()` and `zero()` functions * Support for SciPy-1.0.0 updates to the `scipy.signal` module that is used for some python-control functions and support for `numpy` data types (int32, int64, etc) in all python-control functions * Support for static gains (0D state space systems and constant transfer functions) * New functions `obsv` (observable canonical form), `augw` and `mixsyn` (mixed sensitivity synthesis) * Full list of merged pull requests(https://github.com/python-control/python-control/pulls?q=is%3Amerged+milestone%3A0.8.0+is%3Apr * Full list of commits(https://github.com/python-control/python-control/compare/v0.7.0...0.8.0 * GitHub release page: https://github.com/python-control/python-control/releases/tag/0.8.0 |
From: Richard M. <mu...@cd...> - 2017-04-09 12:34:32
|
We haven’t yet tested the python-control package using Python 3.6, so there are no pre-compiled versions of the slycot or controls packages on the conda server, which is what I think is causing the problem. I did a clean python3.6 installation using conda to see if things work. It looks like I get numpy 1.12 (instead of 1.9) and so maybe also be part of the problem in the errors below. However, moving past that problem I get the following error: > (py36test) bash-3.2$ conda install -c python-control -c cyclus slycot control > Fetching package metadata ........... > Solving package specifications: .... > > > UnsatisfiableError: The following specifications were found to be in conflict: > - python 3.6* > - slycot As mentioned, this is because slycot (and python-control) haven’t yet been compiled for Python 3.6 => they are not on the conda server. A couple of options: * Use Python 3.5 * Install slycot and control using pip (I just tried it and that works). This requires that you have a FORTRAN compiler. * If you don’t have a FORTRAN compiler, some parts of python-control will work without slycot. You still need to use pip to install the control package, though. Hope that helps. -richard > On Apr 9, 2017, at 05:17, Vincent R. <vor...@ya...> wrote: > > Hello, > > I'm tying to install the Python Control System Library, to test it as a matlab replacement for my students. > I use Linux, and the Anaconda distribution : python 3.6 for a 64bit system. > When i try to install control following instructions on the website, i get this error message : > ~/anaconda3/bin $ ./conda install -c python-control -c cyclus slycot control > Fetching package metadata ............. > Solving package specifications: . > > UnsatisfiableError: The following specifications were found to be in conflict: > - control -> numpy 1.9* -> python 2.6* -> openssl 1.0.1* > - python 3.6* > Use "conda info <package>" to see the dependencies for each package. > > Do have i to wait for a new version of the package, or do you know of a workaround ? > > Thanks > V.R. > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > python-control-announce mailing list > pyt...@li... > https://lists.sourceforge.net/lists/listinfo/python-control-announce |
From: Vincent R. <vor...@ya...> - 2017-04-09 12:17:17
|
Hello, I'm tying to install the Python Control System Library, to test it as a matlab replacement for my students. I use Linux, and the Anaconda distribution : python 3.6 for a 64bit system. When i try to install control following instructions on the website, i get this error message : ~/anaconda3/bin $ ./conda install -c python-control -c cyclus slycot control Fetching package metadata ............. Solving package specifications: . UnsatisfiableError: The following specifications were found to be in conflict: - control -> numpy 1.9* -> python 2.6* -> openssl 1.0.1* - python 3.6* Use "conda info <package>" to see the dependencies for each package. Do have i to wait for a new version of the package, or do you know of a workaround ? ThanksV.R. |
From: Ryan K. <rk...@si...> - 2015-10-24 06:35:07
|
This is excellent. Keep up the good work. Will the conda install work in windows? If not, what would it take to make it work? This would be great for my students. -- Ryan Krauss, Ph.D. Associate Professor Mechanical Engineering Southern Illinois University Edwardsville On Sun, Oct 18, 2015 at 12:07 PM, Richard Murray <mu...@cd...> wrote: > Version 0.7.0 of the python-control toolbox is now available for download > on SourceForge, as well as via pip and conda. This version was completed > by in April 2015 (sorry for the delays in posting!). A short list of > changes is appended to the bottom of this message. > > Mac users can now install slycot (and python-control) without needing a > FORTRAN compiler, simply using > > pip install slycot > pip install control > > This also works on linux, but it builds from source => you still need a > FORTRAN compiler. To install in a user directory, use 'pip install —user …’. > > Both slycot and python-control can also be installed with conda, again > without needing a fortran compiler: > > conda config --add channels http://conda.binstar.org/cwrowley > conda install slycot > conda install control > > The conda install works on both Mac and Linux. > > Documentation is now available at > > http://python-control.readthedocs.org/ > > Thanks to Clancy Rowley, Rene van Paassen, James Goppert, Scott Livingston > and others who contributed to this release. > > -richard > > Changes since previous release (0.6d): > > * Fixes to docstrings and examples (multiple) > * Bug fix to gain margin calculation for phase crossing through zero > * c2d functionality added for MIMO state-space systems > * Faster versions of freqresp for transfer functions and state space models > * Fixed bug in dare so that it returns stabilizing solution > * Faster version of force_response (lsim) > * Installation via pip and conda > * Gain vector now optional in root_locus > > A full list of changes is available on > https://github.com/python-control/python-control/commits/master. > > > > > ------------------------------------------------------------------------------ > _______________________________________________ > python-control-announce mailing list > pyt...@li... > https://lists.sourceforge.net/lists/listinfo/python-control-announce > |
From: Richard M. <mu...@cd...> - 2015-10-18 17:07:57
|
Version 0.7.0 of the python-control toolbox is now available for download on SourceForge, as well as via pip and conda. This version was completed by in April 2015 (sorry for the delays in posting!). A short list of changes is appended to the bottom of this message. Mac users can now install slycot (and python-control) without needing a FORTRAN compiler, simply using pip install slycot pip install control This also works on linux, but it builds from source => you still need a FORTRAN compiler. To install in a user directory, use 'pip install —user …’. Both slycot and python-control can also be installed with conda, again without needing a fortran compiler: conda config --add channels http://conda.binstar.org/cwrowley conda install slycot conda install control The conda install works on both Mac and Linux. Documentation is now available at http://python-control.readthedocs.org/ Thanks to Clancy Rowley, Rene van Paassen, James Goppert, Scott Livingston and others who contributed to this release. -richard Changes since previous release (0.6d): * Fixes to docstrings and examples (multiple) * Bug fix to gain margin calculation for phase crossing through zero * c2d functionality added for MIMO state-space systems * Faster versions of freqresp for transfer functions and state space models * Fixed bug in dare so that it returns stabilizing solution * Faster version of force_response (lsim) * Installation via pip and conda * Gain vector now optional in root_locus A full list of changes is available on https://github.com/python-control/python-control/commits/master. |
From: Richard M. <mu...@cd...> - 2014-08-09 22:37:11
|
Following a discussion on the developers list, the source code repository and issues tracking for python-control package have been shifted from SourceForge to GitHub. User support for python-control remains on SourceForge, including downloads of the latest release, code documentation, and user discussion lists. If you are a user of python-control, you can continue to use SourceForge as the primary location of file downloads and user documentation: http://python-control.sourceforge.net/ http://python-control.sourceforge.net/manual/ The current release of python-control is 0.6d, release on 22 March 2014. A new version should be coming sometime this summer. In addition to shifting the development environment to GitHub, we have change the python-control-discuss mailing list from a developers-only list to a general discussion list. Feel free to use that list if you want to see discussions about usage of the package: https://lists.sourceforge.net/lists/listinfo/python-control-discuss This list (python-control-announce) will continue to be a low-volume mailing list with posts regarding new releases of the package or other major updates. For those who are interested in the very latest version of python-control, you can clone the python-control project on github: https://github.com/python-control/python-control -richard |
From: Richard M. <mu...@cd...> - 2014-03-23 20:37:07
|
Version 0.6d of the Python Control Systems Library (python-control) has been posted to SourceForge. This adds a few new functions and fixes some bugs. * Fixed a bug in dime.py that caused errors when using method 'tustin' or 'zoh'. * Improved stability margin calculations, including support for FRD systems. * Minimal realization support for transfer functions and state space systems. * New MATLAB-like functions: append, connect, mineral * Increased python3 compatibility. A more detailed list of changes is included below (starting from 0.6c). -richard 2014-03-22 Richard Murray <murray@sidamo.local> * src/matlab.py (ss): allow five arguments to create a discrete time system. From Roberto Bucher, 12 Jan 2014 2014-03-22 Richard Murray <murray@sidamo.local> * src/bdalg.py (feedback): allow FRD for feedback() 2014-03-22 Richard Murray <murray@sidamo.local> * tests/discrete_test.py (TestDiscrete.test_sample_system): added conversions using tustin and zoh to catch 'dt' bug #5 * src/dtime.py (sample_system): Changed 'dt' to 'Ts' to fix bug #4 * tests/frd_test.py (TestFRD.testbdalg): added unit tests for bdalg functions operating on FRD data * src/bdalg.py (series, parallel, negate, feedback): updated documentation to note that FRD ovjects work. (feedback): updated conversions to allow for FRD 2013-07-15 Richard Murray <murray@altura-2.local> * src/frdata.py, src/xferfcn.py: updated to use __truediv__ and __rtruediv__ for compatibility with python3 2013-07-14 Richard Murray <murray@altura-2.local> * src/dtime.py (sample_system): added check to make sure cont2discrete is available in scipy.signal (sample_system): added docstring 2013-06-24 Richard Murray <murray@altura-2.local> * tests/minreal_test.py (TestMinreal.testMinrealBrute), src/xferfcn.py (_convertToTransferFunction), src/statesp.py (StateSpace.__rmul__), src/margins.py (stability_margins): changed exception syntax to be python3 compatibile (works for python2.6+) 2013-06-10 Richard Murray <murray@altura-2.local> * src/xferfcn.py (TransferFunction.horner): small fix to docstring * src/freqplot.py (nyquist_plot): small fix to docstring 2013-06-09 Richard Murray <murray@altura-2.local> * tests/bdalg_test.py (TestFeedback.testScalarSS) (TestFeedback.testScalarTF): added simple test of default argument to feedback() for state space and transfer function systems * tests/frd_test.py (TestFRD.testFeedback): added test of default argument to feedback() for FRD type * src/bdalg.py (feedback): * src/frdata.py (FRD.feedback): * src/statesp.py (StateSpace.feedback): patched in default value of 1 for other system in feedback(). Contributed by Ryan Krauss <rk...@si...> * tests/xferfcn_test.py (TestXferFcn.testEvalFrMIMO) (TestXferFcn.testEvalFrSISO): added tests of __call__ version of evalfr. * src/xferfcn.py (TransferFunction.__call__): patched in new __call__ functionality from Ryan Krauss <rk...@si...>, but modified to use evalfr (works with MIMO). SISO transfer functions return a single complex number, MIMO transfer functions return a matrix of complex numbers. 2013-05-23 Rene van Paassen <ren...@gm...> * src/margin.py: re-vamped stability_margins function. Now uses analytical method for TF and state-space, works on FRD objects too, and can optionally return all margins found for the analytical method. * src/xferfcn.py and src/frdata.py: Now return array result for fresp when called with an iterable frequency vector * src/xferfcn.py and src/statesp.py: added minreal functions * src/bdalg.py: implemented append and connect functions (old version, with indexes, not with names) * src/matlab.py: added connect, append, minreal * src/xferfcn.py and src/statesp.py: added/corrected __rmul__. In most cases a gain matrix (np.matrix) may now be used in combination with ss or tf systems. 2012-11-10 Richard Murray <murray@altura.local> * src/canonical.py: new module implementing conversions to selected canonical forms: canonical_form(), reachable_form() implemented * src/lti.py (issiso): new function to quickly check if a system is single input, single output or not 2012-11-04 Richard Murray <murray@altura.local> * src/__init__.py: added action item to separate out matlab module functionality (eventually) * src/matlab.py: added code for setting up MATLAB defaults if matlab submodule is imported instead of main (control) module. See comments in __init.py__ for what needs to be done to implement. * src/freqplot.py (bode_plot): moved default values of plotting options to config module to allow easier use override * src/config.py: new module to help set package defaults * src/xferfcn.py (_convertToTransferFunction): removed extraneous print statements if slycot is not installed * src/statesp.py (StateSpace.__str__): fixed error in printing timebase when dt is None (python 3) |
From: Richard M. <mu...@cd...> - 2012-11-03 23:12:30
|
Version 0.6c of the Python Control Systems Library (python-control) has been posted to SourceForge. The main changes for this version are: * Support for discrete time systems using the 'timebase' variable dt. For continuous systems dt = 0 and for discrete time systems dt = sampling time. If dt = None, timebase is not specified and can be either discrete or continuous time. System compositions (series, parallel, feedback) requires matching timebases (with automatic conversion if one timebase is None and the other is specified). * There is now a frequency response data (FRD) subclass contributed by Rene van Paassen at Delft University of Technology. For now, the frequency vectors of different FRD objects need to match; no interpolation / clipping yet. * There is now a mineral() function for computing minimal transfer functions (by removing pole zero cancellations), contributed by Rene van Paassen at Delft University of Technology. * Improved support for python 3.x: the current version should run in python 2.6+ (tested in 2.7) and python 3.x (tested in 3.2). I haven't yet tested slycot in python 3.x, but the functions that don't require slycot (most SISO calculations) are working. A more detailed list of changes is included below (starting from 0.5c). -richard 2012-11-03 Richard Murray <murray@altura.local> * doc/modules.rst: updated documentation format so that items are broken down by functionality and not internal module name. Still not complete, but most functions should now show up in documentation. * doc/index.rst: got rid of todos from documentation (not formatted correctly and shouldn't show up in user documentation) * src/lti.py: added missing docstrings * doc/intro.rst: small tweaks to text, including adding a link to FBS 2012-11-03 Richard Murray <murray@altura.local> * src/rlocus.py (_RLSortRoots): convert output of range() to explicit list for python 3 compatability * tests/modelsimp_test.py, tests/slycot_convert_test.py, tests/mateqn_test.py, tests/statefbk_test.py: updated test suites to skip specific tests that require slycot if it is not installed * src/exception.py (slycot_check): added a function to check if slycot is installed * README: updated readme to include information about running nosetests, which works in python3 (unlike the test_all.py script) * tests/test_control_matlab.py, tests/test_all.py: set to executable so that nosetests does not run this file (it already runs all unit tests in this directory). Add comments at top talking about tests. * tests/discrete_test.py (TestDiscrete.test_discrete_bode): explicitly create a list from map() output for python 3 * src/frdata.py: removed long data type from comparisons for constant systems (not supported in python3) * src/xferfcn.py (TransferFunction.freqresp): force frequencies to be a list (map returns iterator in python3) * src/lti.py (isdtime, isctime): updated timebase checking since python3 won't allow dt to be compared to integer * src/__init__.py: updated frdata import to python3 compatible form * src/statesp.py (_convertToStateSpace): fixed exception syntax to be python3 compatible * examples/pvtol-nested.py: converted print statements to be python3 compatible * doc/class_strings.rst: added FRD class to list of classes that show up in the user documentation * examples/rss-balred.py: fixed error in output argument order for call to matlab.impulse * ../README: updated readme file as a test of post-commit hook 2012-11-02 Richard Murray <murray@altura.local> * doc/conf.py, setup.py: updated version number to 0.6c * tests/frd_test.py: unit tests for FRD data type (suite): added suite() function to allow test_all.py to work * tests/xferfcn_test.py (TestXferFcn.testMinreal): new unit test * src/xferfcn.py (TransferFunction.minreal): new function for removing cancelling pole/zero pairs, contributed by M.M. (Rene) van Paassen * src/statesp.py (_convertToStateSpace): new functionality for converting a matrix to a constant system * src/modelsimp.py (minreal): removed extraneous code (moved to xferfcn.py) * src/frdata.py: new file implementing FRD data type, contributed by M.M. (Rene) van Paassen * src/xferfcn.py: resolved conflict between versions ---- control-0.6b released ----- 2012-11-02 Richard Murray <murray@altura.local> * src/xferfcn.py, src/statesp.py, src/lti.py, src/bdalg.py: constants must now be of type 'int' rather than 'long' (for python 3 compatibility) * tests/statefbk_test.py, tests/slycot_convert_test.py, tests/convert_test.py: added import __future__ calls for python 3 compatibility; updated print calls * src/modelsimp.py, src/xferfcn.py, src/delay.py, src/phaseplot.py, src/margins.py, src/statesp.py, src/mateqn.py: added import __future__ calls for python 3 compatibility 2012-11-02 Richard Murray <murray@altura.local> * src/xferfcn.py, src/timeresp.py, src/statesp.py, src/statefbk.py, src/robust.py, src/rlocus.py, src/pzmap.py, src/phaseplot.py, src/nichols.py, src/modelsimp.py, src/matlab.py, src/margins.py, src/freqplot.py, src/ctrlutil.py, src/bdalg.py: globally referenced import commands for python 3.x * src/__init__.py: changed import commands to be global instead of local ('from control.bdalg ...' instead of 'from bdalg ...') 2012-10-31 Richard Murray <murray@altura.local> * src/xferfcn.py (TransferFunction._common_den): converted print statements to python 3 compatible form and included __future__.print_function * src/phaseplot.py: converted print statements to python 3 compatible form and included __future__.print_function * src/mateqn.py (lyap, dlyap): converted except T, E to except T(E) * src/margins.py: converted print statements to python 3 compatible form and included __future__.print_function * src/xferfcn.py (TransferFunction.__add__, __mul__, __div__, feedback): converted raise T, E to raise T(E) for python 3 * src/xferfcn.py (TransferFunction.returnScipySignalLti): fixed raise(T(E)) bug * src/statesp.py (_rss_generate): fixed raise(T(E)) bug * src/statefbk.py (acker, gram): converted raise T, E to raise T(E) for python 3 * src/modelsimp.py (hsvd, modred, balred): fixed raise(T(E)) bug and converted raise T, E to raise T(E) for python 3 * src/margins.py (stability_margins): fixed raise(T(E)) bug * src/statesp.py: converted raise T, E to raise T(E) for python 3 * tests/test_all.py: converted print statements to python 3 compatible form and included __future__.print_function * tests/statefbk_test.py (TestStatefbk.setUp): turned off debugging flag (accidently left on) ---- control-0.6a released ----- 2012-10-27 Richard Murray <murray@altura.local> * src/statefbk.py (acker): small updates to docstring * src/bdalg.py (feedback): fixed up docstring formatting (for sphinx) * tests/statefbk_test.py (TestStatefbk.testAcker): skip ill-conditioned systems and loosened tolerances on acker() testing * src/lti.py (timebaseEqual): replaced "type(sys.dt) == NoneType" with "sys.dt is None", based on feedback from Luke Peterson that NoneType is deprecated in python 3. 2012-10-22 Richard Murray <murray@altura.local> * examples/genswitch.py (genswitch): updated calls to legend, fixing problem pointed out by Scott Livingston 2012-10-19 Richard Murray <mu...@dn...net> * src/matlab.py (rlocus): reverted change in default argument processing for klist. This has some negative consequences: http://www.deadlybloodyserious.com/2008/05/default-argument-blunders/ 2012-10-18 Richard Murray <mu...@dn...net> * src/freqplot.py (gangof4_plot, nyquist_plot): discrete time systems supported (through fresp) * src/statesp.py (StateSpace.evalfr): added warning if discrete time evaluation is above Nyquist frequency * src/xferfcn.py (TransferFunction.evalfr, freqresp): : added warning if discrete time evaluation is above Nyquist frequency * tests/discrete_test.py (TestDiscrete.test_discrete_bode): rudimentary unit test for discrete bode plot * src/freqplot.py (bode_plot): fixed bug where input frequency list was being overwritten by default frequency range * src/xferfcn.py (TransferFunction.evalfr, freqresp): handles dtime * src/statesp.py (StateSpace.evalfr): handles dtime * src/lti.py (timebaseEqual): converted function to take systems as inputs instead of dt as input (also affected functions in statesp.py and xferfcn.py) * src/lti.py (timebase): timebase now returns dt instead of 'ctime'/'dtime' 2012-10-13 Richard Murray <mu...@dn...net> * src/lti.py (timebase): new function to return timebase. Doesn't yet handle the case where dt == None. 2012-10-07 Richard Murray <murray@altura.local> * src/matlab.py (c2d): MATLAB compatible function (just calls sample_system) * tests/discrete_test.py (TestDiscrete.test_sample_system): unit test for sampling * src/dtime.py (sample_system, _c2dmatched): new functions, based on contributiosn from Benjamin White * src/dtime.py: added back this file, this time with sampling routes to convert from continuous to discrete time * src/timeresp.py (forced_response): added discrete time simulator, using dlsim from scipy.signal 2012-10-07 Richard Murray <murray@altura.local> * doc/conf.py: fixed release number (0.6a instead of 0.6c) * src/__init__.py: moved timebase functions from dtime to lti * src/lti.py: moved isdtime, isctime, timebase, and timebaseEqual from dtime.py to lti.py. Moved initialization of dt to Lti.__init__(). * src/statesp.py (StateSpace.__init__): Moved dt initialization to Lti object initialization * src/xferfcn.py (TransferFunction.__init__): Moved dt initialization to Lti object initialization 2012-10-06 Richard Murray <murray@altura.local> * tests/discrete_test.py: added additional tests for dt = True cases * src/statesp.py (StateSpace.__str__): show sampling time as 'unspecified' if dt is a boolean and equal to True * src/xferfcn.py (TransferFunction.__str__): don't print sampling time (dt) if dt = True (discrete time with unspecified time base) * src/dtime.py: added code to support dt = True for unspecified sampling time for a discrete time system * src/bdalg.py: much -> must in docstrings 2012-10-06 Richard Murray <murray@altura.local> * src/dtime.py: new module with functions for operating on discrete time systems * src/modelsimp.py: added NotImplementedError for discrete time * src/freqplot.py: added NotImplementedError for discrete time * src/bdalg.py: added documentation about timebases (discrete versus continuous) * src/statesp.py (_mimo2siso): include sampling time * src/xferfcn.py (TransferFunction.__str__): added optional var keyword to allow any symbol to be used * src/matlab.py (tf2ss): added code required to keep track of dt * src/xferfcn.py (TransferFunction.__str__): added additional string for discrete time system, plus use 'z' for polynomial variable (TransferFunction.__neg__): set sampling time for negation (TransferFunction.__add__): added test for same sampling time (TransferFunction.__mul__): added test for same sampling time (TransferFunction.__div__): added test for same sampling time (TransferFunction.feedback): added test for same sampling time * src/statesp.py (StateSpace.__str__): added additional string for discrete time system (StateSpace.__add__): added test for same sampling time (StateSpace.__mul__): added test for same sampling time (StateSpace.__rmul__): set sampling time for product (StateSpace.__neg__): set sampling time for negation (StateSpace.feedback): added test for same sampling time * tests/discrete_test.py (TestDiscrete): unit tests for discrete time systems * src/xferfcn.py (TransferFunction.__init__): added dt class variable for discrete time systems * src/statesp.py (StateSpace.__init__): added dt class variable for discrete time systems |
From: Richard M. <mu...@cd...> - 2012-10-07 03:35:27
|
Version 0.5c of the Python Control Systems Library (python-control) has been posted to SourceForge. The main changes for this version are: * Bode and Nyquist plot enhancements that allows matplotlib keywords to be passed through functions for more flexible setting of line styles (thanks to Kevin Davies for the initial code). Nyquist plots now allow labeling of frequency points via the 'labelFreq' keyword (code contributed by Kevin Davies). * Fixed problems in tf2ss conversions when there are poles with multiplicity > 1. This was generating lots of errors in the unit tests (properly, as it turns out, since there was a bug!). * Added acker() function from Roberto Bucher * Improved unit testing with fewer warnings and error messages. Substantial modifications to convert_test.py that included fixing bugs in the unit test code and the conversion code (as noted above). * Updated documentation (still needs work, though!) You can download this version of the code from SourceForge https://sourceforge.net/projects/python-control/files A more detailed list of changes is included below (starting from 0.5a). The next release of the code will be version 0.6a and will include support for discrete time transfer functions. -richard 2012-10-03 Richard Murray <murray@altura.local> * tests/matlab_test.py (TestMatlab.testSsdata): unit test * src/matlab.py (ssdata, tfdata): new functions to return state space and transfer function object data. For transfer functions, currenly requires SISO system * src/freqplot.py (bode_plot): Adding np.atleast_1d to the np.squeeze calculations makes it possible to use a single value frequency list (contributed by Benjamin White) 2012-09-09 Richard Murray <murray@altura.local> * tests/statefbk_test.py (TestStatefbk.testAcker): unit test * src/statefbk.py (acker): added acker() from Roberto Bucher. 2012-08-29 Richard Murray <murray@altura.local> * src/xferfcn.py (TransferFunction._common_den): fixed up code for case where poles have multiplicity > 1. Set end limits of check to avoid overruning the list + combine complex conjugate pole pairs from the outside in to prevent small errors from growing. 2012-08-26 Richard Murray <murray@altura.local> * tests/convert_test.py (TestConvert.testConvert): replaced previous test of transfer function coefficients with a frequency response test. This is necessary because various degenerate conditions will generate a situation where the transfer functions are of different forms but still equal. Eg 0/1 = 1e-17 s + 1e-16 / (s^2 + s + 1). Still getting errors, but looks like actual problem in conversion. * src/statesp.py (_mimo2siso): set default value for warn_conversion to False * tests/convert_test.py (TestConvert.testConvert): Added check to make sure that we don't create problems with uncontrollable or unobservable systems. 2012-08-25 Richard Murray <murray@altura.local> * src/xferfcn.py (TransferFunction._common_den): identified bug in the way that common denominators are computed; see comments in code regarding complex conjugate pairs. * src/statefbk.py (place): repalced nd.size(placed_eigs) with len(placed_eigs) to fix intermittent problems pointed out by Roberto Bucher in control-0.3c. * tests/rlocus_test.py (TestRootLocus.testRootLocus): added sort() to test to get rid of problems in which ordering was generating an error. * src/freqplot.py (nyquist_plot): added code from Kevin Davies to label frequency points in Nyquist plot * src/__init__.py: import non-conflicting MATLAB functions by default * src/freqplot.py (bode_plot, nyquist_plot): simplified code and removed unneeded options. To set color, linestyle, etc use keywords and pass to matplotlib. 2012-08-24 Richard Murray <murray@altura.local> * src/freqplot.py: added in plot enhancements from Kevin Davies (bode_plot): pass optional arguments and keywords to matplotlib (get_pow1000): new function for determinine engineering exponent (gen_prefix): new function to get SI prefix for power of 1000 * src/freqplot.py (bode_plot): removed extraneous phase_deg calculation 2012-01-07 Richard Murray <murray@malabar.local> * doc/modules.rst: added new sections for analysis, synthesis, frequency plots and time response. * doc/index.rst (Contents): added modules and examples. * src/xferfcn.py (_convertToTransferFunction): added check for slycot import error. If not present, use signal.lti to perform the conversion. Only works for SISO. * src/statesp.py (_convertToStateSpace): added check for slycot import error, to allow basic functionality without the presence of slycot (contributed by Ryan Krauss). * tests/slycot_convert_test.py (TestSlycot.testTF): moved slycot import into test function, so that test script still works even if time response is not present. 2011-08-09 Richard Murray <murray@malabar.local> * src/timeresp.py: fixed doc reference to time-series-convention 2011-08-08 Richard Murray <murray@malabar.local> * doc/index.rst, doc/modules.rst: Moved MATLAB section into python-control modules file 2011-08-07 Richard Murray <murray@malabar.local> * doc/conf.py: added autosummary extension * doc/timeresp.rst: New file containing listing of functions for time responses (step, initial, etc) * doc/freqplot.rst: New file listing functions for frequency plots (bode, nyquist, etc) * doc/modules.rst: New file that contains a listing of the major modules in the toolbox * doc/index.rst (Contents): Rearranged contents to put modules documentation in a separate section. Also added examples section (not quite ready yet). 2011-08-07 Richard Murray <murray@malabar.local> * examples/rss-balred.py: reordered outputs from call to matlab.step (missed this the first time around) * doc/matlab_strings.rst: Matlab -> MATLAB (proper spelling) * setup.py, doc/conf.py: updated version to 0.5b 2011-08-07 Richard Murray <murray@malabar.local> * doc/conf.py: Updated version numbers to 0.5a, regenerated documentation and reposted on web (note that 0.5a tag and source distribution have this wrong) |
From: Richard M. <mu...@cd...> - 2011-08-07 15:55:58
|
Version 0.5a of the Python Control Systems Library (python-control) has been posted to SourceForge. The main changes for this version are: * Updated time responses functions: step_response, initial_response, impulse_response and forced_response, along with MATLAB compatible versions (step, initial, impulse, lsim). Handles MIMO systems by allowing choice of input and output. * Added a phase_plot command that can be used to generate rudimentary phase portraits for 2D nonlinear systems (similar to the plots in Chapter 4 of Feedback Systems). See examples/geneticswitch.py for an example. * Updated many function names to be more consistent with python coding style. So StepResponse is now step_response. MATLAB module (control.matlab) interfaces are unaffected (continue to use 'step'). * New function to compute frequencies at which transfer function crosses real axis (phase_crossover_frequencies). Contributed by Steffen Waldherr <wal...@is...> You can download this version of the code from SourceForge https://sourceforge.net/projects/python-control/files A more detailed list of changes is included below (starting from 0.4c). -richard 2011-08-07 Richard Murray <murray@malabar.local> * setup.py: updated version number; next release will be 0.5a since the changes in function names and argument/return value order (for time reponses) require small updates in code * examples/secord-matlab.py, examples/pvtol-nested-ss.py, examples/test-response.py, examples/pvtol-nested.py: fixed small bug in order of output arguments for step command 2011-08-06 Richard Murray <murray@malabar.local> * src/matlab.py (ngrid): copy documentation from nichols_grid * src/__init__.py: changed import commands to import specific functions rather than '*' (better modularity) * src/freqplot.py: default function names are now bode_plot, nyquist_plot and gangof4_plot (still with aliases to non-"_plot" versions) * src/nichols.py (nichols_plot): updated nichols to nichols_plot for consistency with other python-control plotting functions. Set up alias for original name * src/margins.py: StabilityMargins, PhaseCrossoverFrequencies -> stability_margins, phase_crossover_frequencies * src/phaseplot.py: changed PhasePlot and boxgrid to phase_plot, box_grid * src/timeresp.py: changed ForcedReponse, InitialReponse, ImpulseReponse and StepResponse to forced_response, initial_response, impulse_response and step_response. * src/rlocus.py: changed RootLocus to root_locus for better compatability with PEP 8. Also updated unit tests and examples. 2011-07-25 Richard Murray <murray@malabar.local> * tests/phaseplot_test.py: updated unit tests to use new call signatures * examples/phaseplots.py: updated calls to PhasePlot to use new argument structure * src/phaseplot.py (PhasePlot): Updated call signature to be more pythonic and fixed up documentation. * examples/genswitch.py (genswitch): added new example showing PhasePlot functionality * src/phaseplot.py (boxgrid): added function to compute initial conditions around the edges of a box 2011-07-24 Richard Murray <murray@malabar.local> * tests/margin_test.py: added simple unit tests for margin functions (initial versions just call functions; some comparisons missing) * examples/README: added missing README file * examples/phaseplots.py: FBS examples for phaseplot * tests/phaseplot_test.py: unit tests for phaseplot * src/phaseplot.py: initial cut at phase portrait function, built from amphaseplot (Feeback Systems [FBS], Astrom and Murray, 2008) 2011-07-15 Richard Murray <murray@malabar.local> * tests/matlab_test.py (TestMatlab): added unittest for margin() commands (calling format only) * src/statesp.py (StateSpace): updated comments * tests/margin_test.py: set up unit tests for StabilityMargins() and PhaseCrossoverFrequencies() * src/__init__.py: added margins.py to __init__ 2011-07-14 Richard Murray <murray@malabar.local> * src/margins.py (GainPhaseMargin): moved freqplot.MarginPlot to margin.StabilityMargins (MarginPlot didn't actually plot anything) * src/margins.py (PhaseCrossoverFrequencies): added new function to compute frequencies that we cross real axis. Contributed by Steffen Waldherr <wal...@is...> 2011-07-11 Richard Murray <murray@malabar.local> * src/rlocus.py: added real() and imag() to list of functions imported from numpy * src/freqplot.py: renamed plotting functions to BodePlot, NyquistPlot, GangOf4Plot and MarginPlot. Set up aliases to the more common names (bode, nyquest, gangof4, margin). Mainly playing around with idea for the eventual interface to use. * tests/matlab_test.py: updated timeresp outputs to match MATLAB * src/matlab.py (impulse, initial, lsim, step): switched outputs from step, impulse, initial, lsim to match MATLAB standard 2011-07-01 Richard Murray <murray@malabar.local> * src/rlocus.py: modified scipy import to only import those functions that we actually use. This fixes a problem pointed out by Carsten Knoll (TU Dresden) where control.place could be overwritten by numpy.place (because of an "from scipy import *" in rlocus.py * doc/intro.rst: Added link to scipy web page talking about the differences between numpy and MATLAB (contributed by Shuo Han). 2011-06-25 Richard Murray <murray@malabar.local> * src/xferfcn.py (TransferFunction._common_den): changed tolerance for detecting complex valued poles to a user-settable parameter, with default value 1e-8. This was an attempt to fix errors in the convert_test.py unittest script (conversion routine was misclassifying some poles as imaginary when they weren't). * src/xferfcn.py (_convertToTransferFunction): converted arguments to tb04ad to numpy arrays; fixes a unit test error in convert_test.py. * src/statefbk.py (gram): convert system matrix passed to sb03md to numpy array; this fixes a unit test error in modelsimp_test.py. * src/matlab.py (impulse): got rid of X0 argument for impulse response (not implemented in MATLAB). * doc/intro.rst: added some quick start information * src/matlab.py: added documentation for step, impulse, initial, lsim * src/timeresp.py: fixed some MATLAB specific function names in function doc strings 2011-06-22 Richard Murray <murray@malabar.local> * doc/intro.rst: fixed some small types * doc/control.tex: removed (no longer needed) 2011-06-22 Richard Murray <murray@malabar.local> * doc/intro.rst: Added a slightly more general introduction, with a pointer to the python-control wiki (on sf.net) * doc/Makefile: Changed path to sphinx-build to assume it is in the users path (as opposed to an explicit path) * doc/conf.py: Added release information into documentation file 2011-06-21 Richard Murray <murray@malabar.local> * src/statesp.py (_mimo2siso): Moved function from matlab.py. * src/timeresp.py: added file documentation + split out and updated copyright info. Small corrections to documentation. (InitialResponse): Added missing transpose argument in call to ForcedResponse * src/matlab.py: minor changes to documentation to avoid line wraps on standard (80 col) terminal window * src/matlab.py: removed time-series convention documentation from matlab.py since current MATLAB version uses standard conventions. This documentation is currently in timeresp.py. * src/*, doc/*: added Eike Welk's documentation modifications 2011-06-18 Richard Murray <murray@malabar.local> * src/timeresp.py, src/matlab.py: moved documentation about time series convention from matlab.py to timeresp.py * examples/pvtol-nested-ss.py: Fixed bug in call to step (wrong second argument) * tests/matlab_test.py: Updated tests to use MATLAB time response conventions. * tests/timeresp_test.py: Created unit tests for timeresp module, based on matlab_test.py 2011-06-17 Richard Murray <murray@malabar.local> * src/timeresp.py (ForcedResponse): swapped order of input and time arguments for linear response, following Eike's comment "T must always be supplied by the user, but U has a useful default value of 0." * src/matlab.py: moved code for lsim, initial, step, and impulse to timeresp.py and put in new routes that call timeresp.* versions of the functions with transposeData set to True. * src/timesim.py (_check_convert_array): added transpose argument that will transpose input data before processing it. * src/timesim.py: renamed lsim, initial, step, and impulse functions to ForcedResponse, InitialResponse, StepResponse and ImpulseResponse. These versions use Eike Welk's input ordering. * examples/pvtol-nested.py: calls to step() had screwed up inputs. Fixed. 2011-06-17 Richard Murray <murray@malabar.local> * src/matlab.py: added MIMO extensions from Eike Welk on 12 Jun 2011: adds MIMO capabilities for ``lsim``, ``step``, ``impulse``, ``initial`` * src/matlab.py: added changes from Eike Welk on 12 May 2011: - An implementation of the four simulation functions ``lsim``, ``step``, ``initial``, and ``impulse`` of the module ``matlab``. - Adds a function ``dcgain`` to the ``matlab`` module, which computes the gain of a linear system for steady state and constant input. - The patch contains a bug fix for class ``StateSpace``, which enables it to work properly together with Scipy's ``signal`` module. - The simulation functions' return values are changed (back?) to arrays, because matrices confuse Matplotlib. - New times series convention: see _time-series-convention section of matlab documentation - SISO simulation data are squeezed on output. To turn this off, pass the option squeeze=False |
From: Richard M. <mu...@cd...> - 2011-06-20 01:34:12
|
Version 0.4c of the Python Control Systems Library (python-control) has been posted to SourceForge. The main changes for this version are: * Added matrix solvers from LTH (Ola Johnsson, Jerker Nordh, Bjorn Olofsson, Vanessa Romero Segovia. These implement the lyap, dlyap, care and dare functions using slycot. * Added tfvis, Simple GUI application for visualizing how the poles/zeros of the transfer function effects the Bode, Nyquist and step response of a SISO system. Contributed by Vanessa Romero Segovia, Ola Johnsson, Jerker Nordh. You can download this version of the code from SourceForge https://sourceforge.net/projects/python-control/files A more detailed list of changes is included below (starting from 0.4b). -richard 2011-06-17 Richard Murray <mu...@dh...> * examples/tfvis.py: Added tfvis, Simple GUI application for visualizing how the poles/zeros of the transfer function effects the bode, nyquist and step response of a SISO system. Contributed by Vanessa Romero Segovia, Ola Johnsson, Jerker Nordh. 2011-06-16 Richard Murray <murray@malabar.local> * src/matlab.py: import mateqn functions * src/__init__.py: import mateqn functions * tests/test_all.py: added unit tests for matrix solvers, converting to standard format along the way. Seems to work even if slycot routines are not in place, but I'm not sure if this is for the right reasons... * src/mateqn.py: added matrix solvers from LTH (Ola Johnsson, Jerker Nordh, Bjorn Olofsson, Vanessa Romero). Moved slycot function checks to the portion of the code where they are used, so that missing slycot doesn't mess up initialization if proper version of slycot is not available. 2011-04-02 Richard Murray <murray@malabar.local> * src/xferfcn.py (TransferFunction.__add__): fixed bug when adding a transfer function to state space system; _convertToTransferFunction was being called with input/output keywords. Picked up in unit test. * tests/matlab_test.py: added calls to all of the functions that are currently implemented in the library, to make sure there are no hidden issues. These calls do *not* test functionality, they just make sure that MATLAB compatibility functions accept the right types of arguments. * examples/secord-matlab.py: added root locus plot to list of figures that are produced * src/__init__.py: added rlocus to list of modules that are imported by control module * src/exception.py (ControlMIMONotImplemented): added exception for functions that are not yet implemented for MIMO systems * src/xferfcn.py (TransferFunction.__init__): convert integer numerator and denominator objects to floats to eliminate errors when creating common denominator (also used on pole command). This fixes and error were tf([1], [1, 2, 1]).pole() would generate an error. * src/freqplot.py (bode): Tweaked documentation string to remove 'h' from mag and phase return arguments * src/rlocus.py (RootLocus): removed commands that set figure number inside of RootLocus command, for consistency with other frequency plot routines. Added Plot=True argument and updated documentation. * src/matlab.py: added rlocus() command (calls RootLocus) * MANIFEST.in: Added MANIFEST.in file to include examples and tests in source distribution * README: Updated to include information on how to run unit tests. * setup.py: updated version number to 0.4c |