Matimus wrote: > Boris wrote: > > Hi, is there any alternative software for Matlab? Although Matlab is > > powerful & popular among mathematical & engineering guys, it still > > costs too much & not publicly open. So I wonder if there's similar > > software/lang that is open & with comparable functionality, at least > > for numerical aspect. Thanks! > > There is also Scilab. > If anybody knows the reason I'd be happy to hear it.
I feel like I need to respond on this thread, as a recent Matlab/Octave/Scilab to Python convert. I'm cross-posting this to the scipy list, because there was a recent thread about advantages to Python over Matlab. Bottom line: Python is more than a replacement for Matlab, in almost every capacity. There are a couple of places here and there where I feel Matlab still has an advantage, but since I converted about 12 months ago, I have run Matlab only a couple of times, and only to send something to someone who didn't have Python installed. I've been using Matlab for more than 10 years, in every part of my research and teaching. When I started to teach courses with a larger Matlab component, I looked for free/cheap alternatives that the students could use on their own machines. There was the student version of Matlab, which was crippled in ways unacceptable to me. Octave was good, and I used it a couple of years, but the MS Windows port is pretty horrible. I still use it some on Linux, but on Windows it requires Cygwin to be installed, and performance takes a *huge* hit with the compiled extensions in Windows. The community is pretty amazing, and the main author John Eaton is nothing short of incredible (I've personally received bug fix responses within minutes of submitting the bug report!). Writing C++ extensions is also pretty easy in Octave, and I made a lot of use of that. The graphics uses a connection to Gnuplot, which is ok. I used Scilab for a short while. It did install more cleanly in Windows, and the performance was generally better than Octave. I didn't like how some things were not Matlab compatible for no good reason. I got the feeling from the community that it wasn't as open, and that decisions were somewhat arbitrary. GUI syntax was weird, and compiling extensions was a real pain, requiring more than one file per function. I was introduced to python about 12 months ago, and haven't looked back since. :) I want to state some of the hurdles that I felt in the transition, in the hope that it will help others to overcome them. The advantages to Python far outweigh the problems that I had. 1) in Matlab, you can call a function without any execfile() or import statements. This impacts Python negatively in the ease of using it interactively. On the other hand, the one-function per file organization of Matlab can get a little hard to follow. 2) following up on point 1), this has an effect on matplotlib more drastically. Turning it to interactive mode (ion()) helps, but in Linux I get window refresh issues with this mode. Switching to ipython for the shell, making sure to call it with ipython -pylab, has been a big help in this regard. 3) 3D plotting requires yet-another library. luckily I haven't had to use this much, but I hope that someday that it will be part of matplotlib. 4) GUI development is a bit easier in Matlab for small projects, and harder for larger ones. I like using wax in python, which wraps wxPython. Others swear by Dabo, but I always get two windows popping up when I run even the hello world daboui program. At any rate, wxPython looks much better on Windows than the same interface in Matlab, and it is more robust across operating systems. 5) although stated in the python docs that python is easy to interface with C, and in the scipy docs that it is easier to interface to C than Matlab, I cannot agree. perhaps it is my limitation, but I found that the API was more complicated (because of the multiple data structures), and having to keep track of references was something I never had to do in writing Matlab extensions. HOWEVER, once I found Pyrex, all of that changed. Pyrex is simply the best way to write an extension that I have ever seen, and I have never seen its equal for any other language. So my recommendation for a (nearly) complete Matlab replacement would be: python numpy scipy matplotlib pyrex There is a bit of a learning curve, but it is well worth it. On an amusing note, if you work in Python for a while, and go back to Matlab for a bit, you will find that you will forget your semi-colons at the ends of the Matlab lines, and all of your arrays will display and scroll like crazy on your screen. :) thanks all for making such a great set of tools! Brian Blais -- ----------------- [EMAIL PROTECTED] http://web.bryant.edu/~bblais -- http://mail.python.org/mailman/listinfo/python-list