faqts : Computers : Programming : Languages : Python : Modules : numpy

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

58 of 62 people (94%) answered Yes
Recently 10 of 10 people (100%) answered Yes

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.