5 open source alternatives to MATLAB

If you're looking for scientific computing software, but can't afford the leading proprietary solution, check out these open source options.
25 readers like this.
Math formulas in green writing

João Trindade. Modified by Jason Baker. CC BY-SA 2.0.

Editor's note: This article was originally published in June 2016, and has been updated to provide some additional options which you may wish to consider.

For many students in mathematics, physical sciences, engineering, economics, and other fields with a heavy numeric component, MATLAB is their first introduction to programming or scientific computing in general.

 

It can be a good tool for learning, although (in my experience) many of the things that students and researchers use MATLAB for are not particularly demanding calculations; rather they could easily be conducted with any number of basic scripting tools, with or without statistical or math-oriented packages. However, it does have a near ubiquity in many academic settings, bringing with it a large community of users familiar with the language, plugins, and capabilities in general.

 

But MATLAB is a proprietary tool. Without access to its source code, you have limited understanding of how it works and how you can modify it. It is also prohibitively expensive for many people outside of an academic setting, where license fees for a single copy can reach into the thousands of dollars.

Fortunately, there are many great open source alternatives. Depending on your exact objective, you may find one or another will better fit your specific needs. Here are three to consider:

Julia

Julia is a dynamically typed programming language featuring Lisp-style macros, built-in primitives for parallel computing, and functions designed for matrix manipulation, data visualization, and much more. It's designed to feel like a scripting language rather than a C-style programming-language and even has an interactive mode (REPL), and can be embedded into other languages through its embedding API.

Users of Julia have many reasons for loving its syntax and capabilities, but some of the popular examples include its broadcasting feature, which lets you apply a function to one or more arrays without a writing a complex loop, its simple array functions that let you rotate and reshape arrays, matrix transforms, autodiff, native Unicode support, integrated unit testing, easy paralellisation, and all-round simpler syntax with no loss of functionality (and improved code efficiency.)

Julia has an active community around its development and its use, so it's also been tailored for domain-specific purposes, including image processing (JuliaImages), biology (BioJulia), quantum physics (QuantumBFS), nonlinear dynamics (JuliaDynamics), economics (QuantEcon), astronomy (JuliaAstro) and more.

Julia is licensed under the MIT license, and can be downloaded from julialang.org.

GNU Octave

GNU Octave may be the best-known alternative to MATLAB. In active development for almost three decades, Octave runs on Linux, Windows, and Mac—and is packaged for most major distributions. If you're looking for a project that is as close to the actual MATLAB language as possible, Octave may be a good fit for you; it strives for exact compatibility, so many of your projects developed for MATLAB may run in Octave with no modification necessary.

Octave has many different choices available for a front-end interaction outside of the default that now ships with version 4; some resemble MATLAB's interface more than others. Octave's Wikipedia page lists several options.

Octave is licensed under the GPL, and its source code can be found on the GNU download site.

NumPy

NumPy is the main package for scientific computing with Python (as its name suggests). It can process N-dimensional arrays, complex matrix transforms, linear algebra, Fourier transforms, and can act as a gateway for C and C++ integration. It's been used in the world of game and film visual effect development, and is the fundamental data-array structure for the SciPy Stack, an ecosystem of Python-based math, science, and engineering software. NumPy is licensed under the BSD license, and packages are available for Linux, Windows, and Mac OS X.

Scilab

Scilab is another open source option for numerical computing that runs across all the major platforms: Windows, Mac, and Linux included. Scilab is perhaps the best known alternative outside of Octave, and (like Octave) it is very similar to MATLAB in its implementation, although exact compatibility is not a goal of the project's developers.

Scilab is distributed as open source under the GPL-compatible CeCILL license, and its source code is available on the project website.

Sage

SageMath is another open source mathematics software system that might be a good option for those seeking a MATLAB alternative. It's built on top of a variety of well-known Python-based scientific computing libraries, and its own language is syntactically similar to Python. It has many features including a command-line interface, browser-based notebooks, tools for embedding formulas in other documents, and of course, many mathematical libraries.

SageMath is available under a GPL license, and its source code can be found on the project website.


This list only scratches the surface of tools that researchers and students may choose to use as open source alternatives to MATLAB. R, Julia, Python, and other standard programming languages might be a good fit for you, depending on your exact needs. Some other open source tools you may want to consider include: 

  • Genius Mathematic Tool, an actively developed calculator program and research tool. It is written in Genius Extension Language for Linux and Unix computers and is available under the GPL GNU license.
  • Maxima, another frequently updated alternative to MATLAB. It's based on Macsyma, a "legendary computer algebra system" developed at MIT in the 1960s, can be compiled on Linux, Mac OS X, and Windows, and is available under GPLv2.
  • SymPy, another BSD-licensed Python library for symbolic mathematics. It can be installed on any computer running Python. It aims to become a full computer algebra system; has an active development community with regular releases; and is used in many other projects (including SageMath, above). 

Have you used any of these or other tools as alternatives to MATLAB? Which one do you prefer and why? Let us know in the comments below.

Jason Baker
Former Red Hatter. Now a consultant and aspiring entrepreneur. Map nerd, maker, and enthusiastic installer of open source desktop and self-hosted software.
Seth Kenlon
Seth Kenlon is a UNIX geek, free culture advocate, independent multimedia artist, and D&D nerd. He has worked in the film and computing industry, often at the same time.

44 Comments

GNU Octave has started to ship with a frontend user interface by default beginning with version 4.

Thanks for the update.
But I don't see a mention of Octave having it's own official GUI now with version 4.

In reply to by Jason B

python has very popular numpy library

Very interesting article Jason. I shared it far and wide with Edtech and OER people.

Just to say that I ticked the "No, I didn't use a numerical computing platform." as I dont think they even existed when I was at school, or Uni come to that.

i don't know if is opensource but the R programming laguage is good as matlab.

Check out Maxima, it is a system for the manipulation of symbolic and numerical expressions, including differentiation, integration, Taylor series, Laplace transforms, ordinary differential equations, systems of linear equations, polynomials, sets, lists, vectors, matrices and tensors.

http://maxima.sourceforge.net/

The article does a good job at attempting to come out with open source math and numerical tools that could be alternatives to well-known proprietary packages. It would be helpful to mention well-known educational establishments, organizations and even corporate bodies that use these open source tools. Institutions in the so-called Third World would not have problems with open source software if they (institutions) could source help from established sources.

The fear of being left with experimental projects -with infrequent updates- or sometimes even defunct projects, leave educational institutions in the Third World to standardize on proprietary packages, whose developers/publishers/marketers, as the author rightly pointed out, offer steeply reduced educational licenses.

In the case of open source tools that offer compatiblity with proprietary counterparts, the above risk is reduced, whereas in the case of those incompatible withe their proprietary peers, Third World educational institutions adopting such open source tools are left in the cold.

Python + SciPy stack is IMO the only competitive alternative, unfortunatelly for windows users, there is no easy way, how to install it

For those wanting to use the Python+SciPy stack on Windows (or elsewhere) the Anaconda package by Continuum is well packaged, and installs as a stand-alone python install, which makes it much easier to manage on Windows. The associated Conda package manager is easy to work with as well.

In reply to by jxjl (not verified)

The Anaconda installation from Continuum Analytics makes for a very easy install, even on Windows.

In reply to by jxjl (not verified)

In order to be fair here: Are you aware of the home use license of MathWorks products, which is approx. 100$? Of course, it's still not open source ;)

From all I've seen, I think Julia would be a very good (and better performing) alternative to MATLAB. It is MIT licensed, not GPL, so you won't have any problems using it for commercial projects (which I am currently doing).

You shouldn't have any commercial problems using any of the afore mentioned apps. The only restrictions are for changing the source code of the apps.

In reply to by Scott Jones (not verified)

If you're looking to replace Matlab with something free and better, look to the Julia programming language, http://julialang.org. Julia is a general-purpose, open-source language aimed squarely at scientific computation, with the high-level feel of Python, the numerical ease-of-use of Matlab, the speed of compiled C, and the meta-programming CS sophistication of Lisp. It's a killer combination of capabilities that opens a whole new world of possibility in scientific computing.

I was very suprised that Julia was not mentioned. Most of Julia, the packages are written in Julia itself, so unlike R you don't need to know C in addition. The syntax is as easy if not easier than Python, it is faster, it is just one thing that can do all that you need. However, 1.0 has yet to come out, although it might do so this year, and many things are not set yet.

In reply to by John Gibson (not verified)

As of today (2021) I would say with no doubts that Julia _is_ the best alternative to Matlab, as for a very similar (but not, and not aimed to be equal) syntax brings modern designs, computational efficiency and already more "toolboxes" (packages) than Matlab.
The only exception for me is if one wants to retain the maximum source compatibility, then Octave could also be considered.

In reply to by Mee (not verified)

Thanks for this comment. I agree, Julia is a very notable alternative, with lots of features and functions that impact a lot of different use-cases. I've added it to the list.

In reply to by Antonello Lobianco

Interesting and very informative article regarding MATLAB alternatives. In college days, earlier we were introduce to MATLAB but later on when we shift on to Linux platform we prefer to use Scilab. Now, I perfer R language for Statistical operations.

It's "Numpy", not Nympy. For asronomy, the full SciPy environment is enahance with astropy, and is conveniently installed under Anaconda as "astroconda". This appears to be the currently favoured free astronomy environment, succeeding the IRAF and Python 2.7 oriented Ureka collection.

Sorry, typo was introduced in editing. Fixed!

In reply to by Stefan Mochnacki (not verified)

hello

i am student and i want to use open source for my studies

There are lots of great open source tools for studying, agathi. One great way to learn is to run Linux on your school laptop, and systematically explore your distribution's software repository. A great one to start out on is http://ubuntu.com

In reply to by agathi (not verified)

I looking to free replace Simulink (part of Matlab).

Please try Scilab/Xcos. Xcos is the Simulink alternative.

In reply to by Igor (not verified)

ipython/sympy

Great tools. Easily explained. My favorite one among those is numpy in python

I do a lot of math and I thought it could be useful instead having to write a program for every problem.

Can I Simulink these softwares?

Python has libraries that will outperform marlin in most computational problems. Also, most of the popular deep learning packages are python based.

I love Octave too but just can’t do without python.

A lot of the numerical routines will not run on BSD. So i'll have to chose carefully

Thank you, this is a very helpful article to me!

I used Sage a lot, but don't use it too much these days.

Your website is so cool. I'm impressed by the details that you have on this web site. You have taught me so much about open source and Linux!

Nice and interesting post. Thank You! For sharing such a great article, I like to read your information you have mentioned in this article are helpful to me!!

I have installed Mageia Linux and am eagar to explore open source.

Just saw on Twitter that SageMath has a brilliant package for LaTex.

Julia promotes itself as being friendly to MATLAB users, and I personally find it true.

I've not done anything with Julia yet, but it's been on my list for a while.

In reply to by Ariel (not verified)

Designmodo mentioned some new tools in their new article here https://designmodo.com/google-analytics-alternatives/

It may be helpful because there are few absolutely free tools.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.