About alternatives to Matlab

Brian Blais bblais at bryant.edu
Fri Nov 17 13:51:02 EST 2006


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

-- 
-----------------

              bblais at bryant.edu
              http://web.bryant.edu/~bblais





More information about the Python-list mailing list