Octave, a free Matlab clone, and a bit more
In the engineering world, some applications are de facto standards such as AutoCAD, LaTeX, EndNote, Mathematica and last but not least, Matlab. The Matlab language is well known for its versatility and efficiency. Matlabs major problem is pricing, be prepare to spend more than $1000 for the standard package and an extra $100 per toolbox. However there is an open source alternative that is comparable to Matlab. Octave.
Octave is a nice free alternative to Matlab that permits scientists to process data or to use it as a general purpose (graphic) calculator. In some cases Octave's syntax is slightly different from Matlabs’ but standard functions such as the creation of matrices, concatenation of matrices, 2D and 3D plots, data interpolation and numerical differentiation and integration are exactly the same. Octave can be installed via Fink or DarwinPorts but can also be compiled from source available at http://octave.sourceforge.net.
Command Line Interface (CLI) vs. Graphical User Interface (GUI)
Since Matlab 6.0, the software is no longer a CLI-only tool anymore some functions are accessible using a GUI (Graphics, Curve Fitting ...), Octave is a pure CLI application and in my opinion it is a good thing.
Octave as a (graphic) calculator
Octave can be used just as a calculator, by typing commands such as '2+2', you get 'ans =4'. You can even use more complex functions such as ^(power), cos, sin, tan, fft, linear algebra ... Octave is thus a perfect tool to look into the evolution of a function or to plot experimental results stored in a text file (you can import the data using the load function). Different types of 2D and 3D plots are available and the graphs produced look miles better than what you can get with MS Excel. Curve fitting is available (polynomial, or any function you like using optimization routines).
Octave would be prefect in this regard if it had Matlab's ability to interpret LaTeX commands natively for titles and axis labels.
Octave as a programmable calculator
All the Octave functions can be grouped in a file (.m extension) leading to scripts or functions. A function usually leads to a result (output) which is dependent on the function's input whereas a script is just a chain of statements (which can also be scripts of functions).
Octave permits the use of standard test and loops structures such as if, for, while and switch. Thus it is a very good software to teach algorithm development. For the beginner, the fact that variables don't have to be declared is a real positive point but comments are then highly recommended to make sure that your programs will be readable by someone else.
From a more scientific point of view, Octave is perfect for Engineering to solve Partial Differencial Equations using one of the built-in solvers or by writing your own finite difference program.
The benefits of Open Source
Octave can also be seen as a platform designed to receive plug-ins, which are called toolboxes. These toolboxes are numerous and are mainly developed by academics in the following disciplines:
1. Image and video processing
2. Audio processing
3. PDE solvers, finite elements or finite differences methods
4. Signal processing: Fourier transforms ...
5. Data processing: interpolation, curve fitting ...
6. Symbolic maths
7. Numerical computations
Anyone can develop their own toolbox should the need arise. More important they can then share their toolbox with the rest of the Octave community. Most of the time, the solution to your problem has already been partially or completely developed by someone else.
An additional benefit of Octave is that the community is very active and that it is very likely that the Octave user group will help if you have problems using the software, from compilation of the sources to the development of your own libraries. That’s not to say that Matlab’s user community isn’t the same, rather that just because the software is open source and free, it doesn’t mean you can’t get help from an equally vibrant user base.
Limitations of Octave
First as it's free, do not try to perform a complete side by side comparison of Octave and Matlab's features, of course the Matlab is more feature complete. The lack of a Simulink equivalent in Octave is a problem for Process Control engineers.
Like Matlab, Octave is interpreted and can therefore be quite slow. If you try to solve big problems you can still use C++ routines directly in Octave to help it run faster, but for small problems, you develop the solution ten times faster with Octave than the time you would have spent developing the program in C++. Octave also lacks a built in editor but Scintilla will do the job.
Most of these limitations are not found in another Matlab clone: Scilab, is being developed by a French consortium, but my main problem with Scilab is that its syntax is quite different than Matlab's. Therefore if you need to maintain as much compatibility as possible with Matlab, Octave is the more appropriate choice.