I second learning python as an alternative. It's not an all-in-one solution but the best additional packages (e.g. Numpy, Scipy, Matplotlib, etc) are well supported and can run at very similar speeds for a scripting language.
Octave is a simple solution which can interpret most of MATLABs .m-files directly. The GUI of course is by far not that good and many special MATLB functions are missing.
with Numpy, Scipy pyton does all.. it is possible to write Cython code if you want to accelerate in C some part of the code.. Python has all the features for plotting graphs.. many libraries .. on Pypi you can check the impressive number of possibilities.. if you want a complete scientific environnement for whatever platform, now exists Anaconda or Canopy.. with Canopy you have a user friendly interface and the possibility to customize very easily the package you want to use. I have never tried Spyder... seems the same kind..
Python is also a glue language.. a very simple, easily maintanable.. easily learnable language.. very clear.. a kind of Zen language that can be used for many other reasons tahn simply reproduce matlab experiments.. so it is higly recommended !!
As an immediate solution, I will suggest install Octave, as your existing MATLAB code will work without much change. It doesn't support video processing like MATLAB though. For long term solution, it will help to learn Python.
I can highly recommend Python with modules of numpy + scipy + pylab as a former Matlab user. Spyderlib provides Matlab like GUI and workspace. Octave is not mature enough yet. Even you can import your existing matlab functions (if they use only generic libs of matlab) to python using oct2py. In my works involved in computer vision and machine learning, I am comfortable with this python-based programming environment without any problem. It took only a few days switching from Matlab to python for me. Numpy can be even more powerful than Matlab arrays. Just check this out: http://wiki.scipy.org/NumPy_for_Matlab_Users.
Well, If you want to perform, statistical modelling, data analysis or data visualization I would recommend R (ggplot2 package is gr using RStudio. But if you want to do numerical modelling (also data analysis and visualization) but you want to go into the creation of software tools (or other programming topics) I would recommend Python (Scipy,Numpy,Matplotlib... using Eclipse or Spyder as environments). One good thing about Python is that the syntax is quite similar to Matlab. If you want to use something even closer to Matlab but not so flexible in terms of programming Scilab is a good option (it can even convert some m-files to scilab files)
I saw in the discussion some people offering Octave as a solution (why not even GNU-Plot), they are not bad, but a little bit old fashioned (in my opinion).
In summary: I would go to Python (for modelling) or R/RStudio (for data analysis)
You may also want to have a look at SAGE. I have started to use it for quick computations because of its notebook style interface. It can be run online or downloaded. Python code and most libraries integrate seamlessly.
I agree with Erik Isberg. SAGE is what I selected. It's huge. 600+ meg download. It's the youngest, and yet has won more awards. A professor maintains it's by having undergrads add functionality. What type of functionality? The basic premise is to integrate an entire open source project via an API into SAGE. They rarely write 'new' code, rather they integrate existing code bases. It includes 2D and 3D modeling/graphing/animations, Latex, and much more. It has an online notebook you can demo it before installing on your local machine.
SAGE is also useful as a very easy to use calculator for arbitrary precision arithmetic and many other simple chores as well. It however helps to learn Phyton first. Which is fairly easy and can be accomplished by many available online tutorials.
What I find a bit disturbing is the incompatible versions of Phyton being used. SAGE still uses an old version not compatible with the later 3.x releases. As I understand it this is a bit of a mess with some of the packages available as well. Hopefully it will sort itself out in due time, but for now You need to carefully consider which version to use and install.
Octave is a nice alternative, but you can also try FreeMat. It is freely available for every operating system and has a GUI like MATLAB.. And of course there is Scilab..
Although quite different from Matlab, Maxima (http://maxima.sourceforge.net) and Reduce (http://reduce-algebra.sourceforge.net) are very powerful computer algebra systems which are now free and open source.
Actually, the recent version of octave is shipped with gui, which is experimental now but - according my own experience - stable. The next release will be shipped with the new gui as default (presently you explicitely have to tell to the octave to use gui).
The freemath is also a nnice alternative but I think the octave is more mature (take a look on the octave-forge!).
If the syntax is not crutial (you dont want to run matlab code on them (which is possible, but has some difference of the two languages in dialect :-))) then the scilab is a nice alternative. The languag is pretty close to the matlab, but far not that similar as the octave/freemath. If you can go even further in language then potential alternatives (were listed above) the python-based packages (scipy, numpy, SAGE) or the R.
There are also several different packages, too (Gnu Data Lnguage, Yorick, ROOT, ...), their usability strongly depends on your need and on the field (statistical computin -> R, Octave, Numerical stuffs -> SAGE, visualisation -> R, ROOT, mathplotlib, Symbolic computation -> Maxima, Ginac, ...)
I would highly recommend learning Python and the associated Numpy lib. It is quite powerful, easy to use, free, and best of all: portable. Checkout the spyder project if you would like a GUI front-end.
There is an intriguing evolution of SciPy, Matplotlib, and iPython that should be good for open science. See the July 2015 SciPy keynote speech for some historical perspective, synopsis of the current tools, and glimpses into the future -- https://www.youtube.com/watch?v=5GlNDD7qbP4
I have been using OCTAVE now for almost two years and am happy with it. My work is in image and signal processing. It doesn't provide GUI but then who needs it for research work. Besides, its video processing toolbox is still not in place so if you are into video processing you might want to look for some other options. Do let us know what you finally found useful.
If you need a free symbolic algebra system, try Sagemath at http://www.sagemath.org.
If you are looking for an alternative programming language, then have a look at Julia, http://julialang.org. It is as easy as Matlab with better performances.
Use Scilab. It is open source. It can also take MATLAB m-files as input.
If you want alternative to SIMULINK, use SciCos. It is also open source. It uses block diagrams as SIMULINK does.
You can also use OpenModelica. It is open source too. It is much more than MATLAB.
You can use graphics based simulation, OR write text and simulate. The language used by it is called Modelica, which is specially designed for modelling physical systems. It can be used to model and simulate electrical/electronic, thermal, mechanical, hydraulic, and many more systems. you can do complex mathematics using it. nalog control, digital control, logic simulation, linear/non-linear blocks -- everything is available. It can do magnetics, power system design, state machines, Bond graph .
If spped is a priority then have a look at Julia, http://julialang.org/. You can read my article at this link https://www.researchgate.net/publication/312610697_Programming_the_material_point_method_in_Julia too see how it performs compared with matlab.
p
Article Programming the material point method in Julia
Otherwise, as Vinh Phu Nguyen says, Julia is very promising, especially from the performance/vecto/parallel point of view. Many domain-specific librairies already available.
Octave did strong improvements last months. Now you have an IDE, and performance is better. For PDE pbs and discretization methods Octave includes DelaunayTri and triangulation structs like Matlab, which is (unfortunately :( ) the case for Scilab.
If you target control or simulink-like system simulation, Scilab is probably better.