Comparison of Octave, Spyder, Freemat and Scilab as alternatives to MATLAB
I am trying to find an alternative for MATLAB and have so far found:
- GNU Octave
- Spyder
- FreeMat
- Scilab
I'm trying to find which is the best alternative to MATLAB. I'm particularly concerned with performance and the integrity of the results.
Well you're in for a treat I have used all the programming languages/software you mentioned. FreeMat and Spyder I do not have too much experience with, but I have some. The others I am experienced in.
GNU Octave by far beets the competition. Its syntax has an extreme compatibility with that of MATLAB. The only differences, I'm aware of at least, aside from the odd toolbox, which you can attempt to replace by the packages here is that GNU Octave can define functions from the command line.
I don't know if you're aware of QtOctave. QtOctave is a frontend (GUI) for the GNU Octave programming language. QtOctave comes with an editor too.
Scilab is an adequate replacement for MATLAB too. It has some differences in terms of syntax but nothing you can't get your head around if you search the documentation that comes with it.
FreeMat is the worst, in my opinion at least, of software that's syntax is heavily based on MATLAB. My evidence for this is three part: firstly, in the software centre it receive the lowest star rating of the four software in question. Second, it isn't frequently updated, the latest version in the software centre, was last updated in 2008. Third as a result of my second piece of evidence its functions are somewhat lagging. The plus side, however, is that its syntax is highly compatible with MATLAB's.
I have used Spyder, but only briefly I'm afraid. It seems top-quality. The problem with it is that it has only limited compatibility with MATLAB, syntax wise. It requires you to learn some of the Python programming language, that is, if you plan to do well at it.
I would also recommend SageMath as it includes GNU Octave, (if its already installed on your system) Scilab, (if you already have it installed) NumPy, [NumPy and the rest mentioned unless otherwise specified come with Sage and therefore no installation is necessary] Scipy, Matplotlib, maxima, Fortran among many others. SageMath may be downloaded by going to the website http://www.sagemath.org/download-linux.html and selecting a suitable mirror, based on where you are and then installing the relevant .tar.lzma file. After this copy and paste the following commands into terminal (Ctrl+Alt+T):
cd ~/Downloads
sudo mv sage-linux-xbit-ubuntu_y-z-Linux.tar.lzma /home/username
cd ~
tar --lzma -xvf sage-linux-xbit-ubuntu_y-z-Linux.tar.lzma
cd ~/sage-linux-xbit-ubuntu_y-z-Linux
make
sudo ln -s /home/username/sage-linux-xbit-ubuntu_y-z-Linux/sage /usr/local/bin/sage
Where 'x' refers to the bits of your OS; 'y' refers to the version of Ubuntu the sage is designed for (e.g. 10.04_lts; 12.04_lts (the _lts is required in 'y'), etc.); 'z' refers to the architecture of your OS. (i386, amd64, etc.)
Of all the ones you have listed Octave is the most syntax compatible. In fact, apart from some of the expensive Matlab toolboxes, Octave should run 98% (a number I just made up) of your code. I use Matlab at work and Octave at home.
Octave will not run (natively) some of the inbuilt GUIs like inputdlg etc, if you install Qtoctave (an IDE for Octave, sudo apt-get install qtoctave) you can use xmlwidget and a wrapper to get that functionality (I can post code if you are interested).
As far as performance is concerned, Octave is not as fast (google for benchmarks). However, you can get all modern versions of Matlab running on Linux (if you have a licence) and they are included on the install disk by default now, and performance of Linux version of Matlab is as good and often better on Linux when compared to Windows.
If you want performance and you wan't to use free software best to look at scipy. But the syntax is less compatible. You will need to rewrite you code. Spyder is an ide that uses python and scipy, scilab is a mash of octave and maxima and a few others. Not sure about performance of freemat but I don't think it is as developed as Octave.
Good luck.
A few benchmarks
speed
http://www.osc.edu/research/cse/projects/octave_python.pdf
http://www.wseas.us/e-library/conferences/2010/Corfu/COMPUTERS/COMPUTERS2-56.pdf
Remember benchmarks are subjective. There are many variables. The only true way to know is to test them all on your rig using your processing code.