Thursday, July 31, 2008

Matlab Alternatives in Detailed

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 :

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.

No comments: