Geruva Publications - Software Dept.

Order the CD

Contact us by email

Home Page


cs2036 - Numerical Modelling Languages for Linux/UNIX, Windows, and other systems.

Copyright 2004 Edition Arnold Kochman. Other copyrights apply, including but not limited to the GNU Public License.

Matlab has become the standard for DSP system design and simulation and other design work involving intensive experimental computation. Matlab, however, is rather expensive. A number of other products have been developed, and some of these are publicly licensed and open source.

The major Matlab alternatives are Scilab, Octave, and Rlab. None are 100% compatibility with Matlab, but they all provide similar computational power. These and other packages included are described briefly below.

Users will need one of the commonly available unzip type utilities, such as PKUNZIP or WinZip, tar for Linux, etc. Programs are distributed with source, when appropriate, and some programs in C, for example, will have to be compiled.

The various packages are at different levels of maturity and completeness, and I cannot certify that they are all worthwhile for any particular purpose.

Here is a listing of the packages included:

FreeMat is an environment for rapid engineering and scientific prototyping and data processing. It is similar to commercial systems such as MATLAB from Mathworks, and IDL from Research Systems, but is Open Source. FreeMat includes several novel features such as a codeless interface to external C/C++/FORTRAN, parallel/distributed algorithm development, and plotting and visualization capabilities. FreeMat is available under an MIT-type license. Supported platforms include Linux, Windows and Mac OS X.
     FreeMat supports roughly 90% of the features in MATLAB. Missing elements are support for function pointers, classes, 3D graphics and GUIs. Some of these features are planned for FreeMat. Others are not (such as classes). FreeMat is patterned after MATLAB, with a few critical concepts from IDL, including pass by reference and keywords.
Octave - A high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab. It may also be used as a batch-oriented language.
     Octave has extensive tools for solving common numerical linear algebra problems, finding the roots of nonlinear equations, integrating ordinary functions, manipulating polynomials, and integrating ordinary differential and differential-algebraic equations. It is easily extensible and customizable via user-defined functions written in Octave's own language, or using dynamically loaded modules written in C++, C, Fortran, or other languages.
     Octave is distributed under the terms of the GNU General Public License as published by the Free Software Foundation. Installation of Octave under Windows has some tricky aspects. Octave is certainly not a native Windows program, it is rather much more Linux/Unix-like; some basic Linux usage will be helpful. Detailed install information for Windows can be found at http://home.tiscalinet.ch/paulsoderlind /Software/Software.html.
     Octave for Macintosh exists, and I have included it. The installation seems to be problematic, to say the least. It depends on a package called Fink. Furthermore, there is a different version of Fink for each minor version of Mac OS X. There are many (mostly) reports from people who have had a lot of trouble installing on Macintosh.
Scilab - A scientific software package for numerical computations, providing a powerful computing environment for engineering and scientific applications. Developed since 1990 by researchers from INRIA and ENPC, it has been maintained and developed by Scilab Consortium since its creation in May 2003. Scilab has been distributed freely persuant to an open source license and the trademark license since 1994, Scilab is currently being used in educational and industrial environments around the world.
     Scilab includes hundreds of mathematical functions with the possibility to add interactively programs from various languages (C, Fortran...). It has sophisticated data structures (including lists, polynomials, rational functions, linear systems), an interpreter and a high level programming language.
     Scilab has been designed to be an open system so that users can define new data types and operations on these data types by using overloading. Scilab has been built using a number of external libraries. Scilab works on most UNIX/Linux systems and Windows 9X/NT/2000/XP. It comes with source code, on-line help and English user manuals. A number of toolboxes are available with the system.
     Scicos is a Scilab toolbox included in the Scilab Package. It is written in Fortran, C and Scilab language, it comes with complete source code. It has a GUI-based editor for modeling dynamical systems as block diagrams. It has a large number of standard blocks available and provides for definition of new blocks using C, Fortran (dynamic link) or the. Some documentation is not completely up to date. There are restrictions placed upon the redistribution of modifications of Scicos for commercial purposes.
RLaB - A high level programming language targeted at engineering applications. Rlab is not a clone of Matlab or any other language. It is, however, a programming language that incorporates concepts and operators much like those of Matlab. It runs on all Linux/BSD/UNIX systems. RLab is distributed under the GNU General Public License. Created by Ian Searle and collaborators.
Rlabplus - A continuation of the development of RLab (RLaB2). It is an open-source scripting environment for scientific computations. Rlabplus project provides RLaB2 Rel. 2, with the upgrades to the numerical libraries used for the first release, and with addition of new libraries and toolkits, for example, the complete Gnu Scientific Library (GSL). Rlabplus is a creation of Marijan Kostrun.
Euler - A powerful numerical laboratory with a programming language. The system can handle real, complex and interval numbers, vectors and matrices. It can produce 2D/3D plots. Euler comes with Yacas, a computer algebra system, so one can combine symbolic and fast numeric programming. Distributed under the GNU general license. Euler is not a MatLab clone, but has similar functionality.
Yorick - An interpreted programming language, designed for postprocessing or steering large scientific simulation codes. Smaller scientific simulations or calculations, such as the flow past an airfoil or the motion of a drumhead, can be written as standalone yorick programs. The language features a compact syntax for many common array operations, so it processes large arrays of numbers very efficiently. Unlike most interpreters, which are several hundred times slower than compiled code for number crunching, yorick can approach to within a factor of four or five of compiled speed for many common tasks. Superficially, yorick code resembles C code, but yorick variables are never explicitly declared and have a dynamic scoping similar to many Lisp dialects. The yorick language is designed to be typed interactively at a keyboard, as well as stored in files for later use. Yorick includes an interactive graphics package, and a binary file package capable of translating to and from the raw numeric formats of all modern computers.
Tela - TEnsor LAnguage - An interactive numerical computing language, primarily targeted for prototyping numerical simulations. It is, however, also a general purpose programming language that is reminiscent of C but has also elements from Pascal and other interactive systems such as Matlab.
     Tela is not a Matlab clone, although the scopes of the two programs partly overlap. Tela is both faster and more general than Matlab; however, Matlab has more functions for specific tasks such as signal processing. Tela tends to be about 4-10 times faster than Matlab. However, some special functions, Function minimization, root finding, and some other numerical analysis tools are implemented but perhaps not very well tested.
     Tela supports integer, real and complex arithmetic and arbitrary rank arrays. By default, the maximum rank is four, but it can raised by recompiling. Tela runs on Linux/UNIX systems, Cray, AIX, and perhaps can be compiled for other platforms without too much difficulty. Further information can be found at http://www.geo.fmi.fi/prog/tela.html. A version is also available from The Math Forum at Drexel University, but there are restrictions on its use: http://mathforum.org/library/ view/6401.html