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) |