In our shoestring operation we need to prototype algorithms in some higher-level language before committing to a C implementation on embedded hardware.
So far we hav
Just off the top of my head:
Octave has several syntactic improvements on matlab, for example you can say endif
endfor
and endfunction
instead of just end
, which make debugging much easier.
Octave also allows you to dynamically generate functions, and have multiple functions defined in scripts and function file. Which is way nicer than matlab's one-file-one-function approach.
Finally, octave has parcellfun
and pararrayfun
which are very powerful parallel processing tools which matlab completely lacks. There is a parfor
in matlab, but it's not the best way of doing it in my opinion.
Cons for octave are that they are slightly behind on toolboxes, though if you look you can find things similar. fsolve
and lsode
seem a little slower, but more robust, in octave for some reason. Also a big bummer for some people tends to be the lack of symlink and the DAQ toolbox, but that stuff is going to be proprietary anyway.
Python/Numpy is definitely worth a whirl: it's more powerful but their syntax is aimed at more complex pieces of code.
Octave doesn't have guide, which makes building GUIs super easy. I regularly use guide for making tools for my non-MATLAB using colleagues.
I've tested octave and R too.
Regarding octave: I was very impressed with the similarity of octave syntax. It didn't take me much time to transport my MATLAB scripts to octave. Meanwihile I have a particular problem on printing markers jointly with errorbar wich was fixed by Jarno Rajahalme at nabble and to change the xtick font size, which workaround I got in a question response at nabble. So it still have some bugs which with some effort can be overcome. If you experience some problems you may try nabble mailing forum: help-octave@octave.org. By the way my team cannot adapt (user friendly) to it such as they adapt to MATLAB, so we're still using MATLAB. Since MATLAB is built under gnuplot, another way to correct its bugs is editing the generated gnuplot file. The best IDE I found to it was QtOctave, that I made a short review in "Remember Blog".
Regarding R: according to a research made by SciViews, R's performance is superior to MATLAB and octave. I don't have much experience with R. I studied mclust package to wrote a wikibook chapter about EM Clustering in R. By the way, they seem to have a very active community. So you may find third party packages to proposals, which are not IMO so standardized. The best IDE I found was StatET plugin for eclipse, JGR (Java GUI for R) and emacs. Despite the time cost to learn a new programming language, if I would choose an open source platform to make my experiment graphics and some data mining analysis I would try R.
It's interesting to see how the open source alternative works for statistics but not for numerical analysis. R (the octave of statistics) is nowadays much popular than the commercial S-plus (the matlab of statistics). The issues mentioned as reasons not to switch away from matlab found in the other answers were also applicable to R. But still everybody just started contributing and now R is the standard, with better graphics, better packages and no more vendor lock-in.
So you could prefer octave over matlab as well, if you can step over the prisoners dilemma.