Difference between revisions of "Control Systems Library for Python"
Line 13: | Line 13: | ||
== Installation instructions == | == Installation instructions == | ||
I'm using the [http://ipython.scipy.org/moin/ IPython] environment, with [http://scipy.org SciPy] extensions for scientific computing plus the [http://matplotlib.sourceforge.net/ matplotlib] extensions (which enables MATLAB-like plotting). I am doing all of my playing on OS X, using fink. | |||
I'm using the [http://ipython.scipy.org/moin/ IPython] environment, with | |||
Here's what I had to do to get the basic setup that I am using. | Here's what I had to do to get the basic setup that I am using. |
Revision as of 18:02, 23 May 2009
This page collects some notes on a control systems library for Python. The plan is to create an alternative to the MATLAB Control System Toolbox™ that can be used in courses and for research. This page collects information about the toolbox, in preparation for actually writing some code. If you stumble across this page and know of a similar package or would like to contribute, let me know.
Architecture notes
I'm trying to sort out the best object structure to use for control system objects. There is already an LTI class in the signal processing module of SciPY, so I might be able to build on that (and hence get those systems for free). Ideally, I'd like to allow for time delay in the linear systems representation, since these come up a lot in my group's research.
Here's some rough thoughts on a possible object structure:
- InputOutputSystem - dynamical system with inputs and outputs. Could be linear or nonlinear, discrete or continuous time (?), include infinite dimensional systems (time-delays, perhaps some classes of PDEs?). Should be compatible, if possible, with the ODE integrators that are part of SciPy (so that I can use that for simulating systems).
- StateSpaceSystem - state space representation of an input/output system
- LinearStateSpaceSystem - linear system in state space form (ideally with time-delays)
- TransferFunction - frequency domain representation of an input/output system
- StateSpaceSystem - state space representation of an input/output system
Installation instructions
I'm using the IPython environment, with SciPy extensions for scientific computing plus the matplotlib extensions (which enables MATLAB-like plotting). I am doing all of my playing on OS X, using fink.
Here's what I had to do to get the basic setup that I am using.
- Install SciPy - I did this using fink. Have to use the main/unstable tree.
- Install matplotlib - Need this for plotting
- Install ipython - interactive python interface
Small snipped of code for testing if everything is installed
import from scipy * import from matlibplot * a = zeros(1000) a[:100]=1 b = fft(a) plot(abs(b)) show()
Related documentation
Python documentation
- SciPy.org - main web site for SciPy
- IPython - enhanced shell for python
- matplotlib - 2D plotting for python