Entry
What are the criteria I should consider when deciding between Numeric Python, Matlab or Octave?
Jan 24th, 2001 06:25
Marcel Oliver, Louis Luang,
[Note: This is a complicated question. I am currently trying make this
determination for myself, too. This is what I came up with after a
bit of searching and trying. Hopefully more knowlegeable people will
add some meat.]
Mathematical Features:
- Currently Matlab sets the standard. Octave is trailing Matlab by
several versions. The main gist behind Octave is to provide a free
implementation of Matlab.
- Numpy has a set of basic features that cover most of what is
required for a standard undergraduate numerical analysis curriculum,
(standard numerical linear algebra, FFT) but not much more.
Fancy stuff like domain triangulations is
not supported and does not seem currently available.
[Don't know Octave's status on this particular issue.]
- There are some bindings to standard numerical libraries, e.g.
Multipack
[Link http://oliphant.netpedia.net is currently broken]
Graphical Capabilities:
- Again, Matlab is state of the art.
- A frequent criticism about Octave is that its graphical capabilities
are substandard, in particular with regards to publication quality
3D graphics. [Current status?]
- There are graphical add-ons for numpy [No experience with any.]
Interfaces to External Code:
- All three are sufficiently able to interface with external C or
Fortran code.
Programming Language:
- Numpy builds upon attractive general-purpose object-oriented
programming langage.
- Octave and Matlab share mostly the same special purpose language.
Maybe second weakest point of Matlab after Licencing.
- Some clumsyness in Numpy with Matrix multiplication. May
disappear at some point, see
http://python.sourceforge.net/peps/pep-0211.html
http://python.sourceforge.net/peps/pep-0225.html
- Existing Phython modules should make it easy to interface with
Internet or low-level I/O if so desired.
Documentation:
- Matlab: Lots of books and internet resources available.
- Octave: Some Mathlab info may work, somewhat complete user
manual, but somewhat outdated.
- Numpy: Many good books on Python in general, a rather short
but up-to-date introduction to Numpy.
Portability:
- Numpy and Octave; generally good [Known problems?]
- Matlab: Any platforms that Mathworks sees fit to support. This
currently excludes all non-Intel Linux ports.
Lincense:
- Matlab: proprietary.
- Octave: GPL
- Numpy: Phython Lincense, is considered free.
Conclusion:
I currently plan to give Numpy a try as both a teaching platform
and for doing small toy-case research codes. I am not yet sure how
this will work out, but I decided for the probably least-established
option for the following reasons.
- After falling into the proprietary trap with a well-know program
for symbolic math, I do not want to repeat this experience.
- Python as a language as an aestetic appeal that Matlab/Ocatve simply
do not have. Further, the language is useful far beyond numerical
math, which is a big bonus when using it as a teaching language.