FreeMat is a free open source numerical computing environment and programming language, similar to MATLAB and GNU Octave.
In addition to supporting many MATLAB functions and some IDL functionality, it features a codeless interface to external C, C++, and Fortran code, further parallel distributed algorithm development (via MPI), and has plotting and 3D visualization capabilities.
1. What is FreeMat?
FreeMat is an environment for rapid engineering and scientific processing. It is similar to commercial systems such as MATLAB from Mathworks and IDL from Research Systems, but is Open Source. It is free as in speech and free as in beer.
2. Why GPL?
Previous versions of FreeMat were released under MIT licenses. The current version is released under GPL. There are a number of great tools that are available to GPL-ed code (e.g., Qt, FFTW, FFCALL), and FreeMat is now one of them.
3. Why another MATLAB clone? Have you heard of Octave, Scilab, etc.?
Yes! FreeMat is chartered to go beyond MATLAB to include features such as a codeless interface to external C/C++/FORTRAN code, parallel/distributed algorithm development (via MPI), and advanced volume and 3D visualization capabilities. As for the open source alternatives, try them out and decide for yourself. Who said choice was a bad thing?
4. Is FreeMat 100% compatible with MATLAB? What about IDL?
No. FreeMat supports roughly 95% (a made up statistic) of the features in MATLAB. The following table summarizes how FreeMat stacks up against MATLAB and IDL. Because we like to lead with the positive, here are the features in that are supported:
N-dimensional array manipulation (by default, N is limited to 6)
Support for 8,16, 32, and 64 bit integer types (signed and unsigned), 32 and 64 bit floating point types, and 64 and 128 bit complex types.
Built in arithmetic for manipulation of all supported data types.
Support for solving linear systems of equations via the divide operators.
Eigenvalue and singular value decompositions
Full control structure support (including, for, while, break, continue, etc.)
2D plotting and image display
Heterogeneous array types (called "cell arrays" in MATLAB-speak) fully supported
Full support for dynamic structure arrays
Arbitrary-size FFT support
Pass-by-reference support (an IDL feature)
Keyword support (an IDL feature)
Codeless interface to external C/C++/FORTRAN code
Native Windows support
Native sparse matrix support
Native support for Mac OS X (no X11 server required).
Function pointers (eval and feval are fully supported)
Classes, operator overloading
3D Plotting and visualization via OpenGL
Parallel processing with MPI (in the FreeMat development versions)
Here are the list of major MATLAB features not currently supported:
Finally the list of features that are in progress (meaning they are in the development version or are planned for the near future):
3D volume rendering capability (in the FreeMat development versions)
FreeMat-to-MEX interface for porting MATLAB MEX files.
If you feel very strongly that one or more MATLAB features are missing that would be useful to have in FreeMat, you can either add it yourself or try and convince someone else (e.g., me) to add it for you. As for IDL, FreeMat is not compatible at all with IDL (the syntax is MATLAB-based), but a few critical concepts from IDL are implemented, including pass by reference and keywords.
5. What platforms are supported?
Currently, Windows 2000/XP, Linux and Mac OS X are supported platforms. Other UNIX environments (such as IRIX/SOLARIS) may work. FreeMat essentially requires GNU gcc/g++ and gfortran to build. The Win32 build requires MINGW32. I don't know if FreeMat will work with Windows 98/95/ME or NT4 as I don't have access to any of these platforms. A native port to Mac OS X is now available.
6. How do I get it?
Click on the Downloads link (or on the navigation bar on the left). Installers are available for Windows and Mac OS X, and source and binary packages are available for Linux.
7. I found a bug! What now?
Congratulations! Please file a bug report . FreeMat is a fairly complicated program. Simply saying "it crashed" is not particularly helpful. If possible, please provide a short function or script that reproduces the problem. That will go a long way towards helping us figure out the problem. Also, the bug tracking feature of SourceForge will allow you to put in bugs anonymously, but please don't! Anonymous bug reports are difficult to follow up on.
8. Where is function xyz?
There are a number of basic functions that are missing from FreeMat's repertoire. They will be added as time goes on. If there is a particular function you would like to see, either write it yourself or put in an RFE (Request For Enhancement) here.
9. Who wrote FreeMat and why?
FreeMat has been in development by myself (Samit Basu) over a period of four years with help from a number of contributers distributed throughout the globe. Why not? Seriously, my main reason is to provide a free implementation of a reasonable part of the Matlab API, and add some extensions along the way.
10. Are there any development related pages?
Yes. Please see our WIKI based Development Pages