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