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.