I find Matlab great, and for the most part it is my go-to scientific software package. Unfortunately if you don’t have access to a license, or your license server connection isn’t so great, using Matlab may not be so practical.
Lately I’ve found that software packages based on python have been getting better and better at completely replacing Matlab in my computing work. Here is my list of Python Alternatives to Matlab.
Find Python and Matlab Programming on Amazon [Sponsored Link]
Python Alternatives to Matlab
Python is a powerful yet simple, versatile little language that has found it’s place in the centre of the Matlab alternative selection. Scientific use of python has grown over the years, and for some time there have been packages such as scipy, numpy, and matplotlib that help scientific scripting, analysis and visualisation.
Despite the strength of these ‘back-end’ packages I had found that, on windows at least, python was let down by not having an easy to use interface, like that found in matlab. Thankfully these problems now seem to have been solved and there are now a selection of different suites of programs, based on python, but offering a matlab-like level of scientific and numerical programming.
1. Winpython
Winpython was the first time I encountered the Spyder interface. As someone who likes the matlab-style all in one window, this was great. Perhaps not as polished as the other python alternatives to matlab suggested here, but you may find the lack of corporate backing appealing.
Check out Anaconda (number 3, below) if you like the spyder interface, but would prefer a more polished distribution.
2. Enthought Canopy
The Enthought Canopy (formerly Enthought Python Distribution) was the first scientific python distribution that really made me think a python-based alternative to Matlab might be possible.
Enthought Canopy has its own ‘graphical analysis environment’ that behaves in much the same way as the matlab interface you might be familiar with.
Crucially Enthought Canopy also comes with its own package manager that allows you to find and install various python packages to help you process and analyse your data.
https://www.youtube.com/watch?v=BunbITllM9g
3. Anaconda
Recommended by Software Carpentry, Anaconda has become my favourite scientific python environment.
In many ways Anaconda is similar to Enthought Canopy. It comes bundled with a range of scientific and numerical packages such as numpy and matplotlib, as well as having it’s own conda package manager. The package manager makes it easy to install existing packages, external packages as whl files or from binstar.org.
Check out this playlist on “The best way to learn Python“, using Anaconda.
What about Python(x,y)?
That’s a good point. I think I used it ages ago, but I’m not all that familiar with it to be honest. Have you had much success with it? Maybe it’s time I gave it another chance.
I think it is good. I would describe the different versions this way:
1. Winpython: good as a fairly minimal, portable scientific python distribution. However, it has less software and poorer performance (due to lack of MKL) than the others. It is more flexible than Python(X,Y) but less than Anaconda.
2. Python(X,Y): good as a very complete, integrated, high-performance python distribution. However, it is less flexible than the others, and doesn’t support Python 3.x or 64bit (although both are in the works).
3. Anaconda: good as a flexible, customizable, medium-size python distribution. It is more flexible than the others, and is also the only of the three that is cross-platform. It has more software than Winpython but less than Python(X,Y). However, it takes more work to setup and maintain a complete set of software than Python(X,Y), and even then it has less software available. It can be used to set up portable python distributions, but is not portable by default like Winpython. You also have to pay for MKL support, unlike Python(X,Y) which has it for free.
So, for example, Python(X,Y) comes with a better terminal emulator, a better text editor, a diff program, and Qt programs, none of which Anaconda has (at least on windows). It also has a lot more Python packages available out-of-the-box. And these are all exposed through the start menu, unlike Anaconda which only exposes a few programs that way. However, it is not as easy to change the installed packages or set up additional environments.
I haven’t used enthought personally, for various personal, nom-emperical reasons I won’t get into (the cost isn’t one of them, I am in academics and could get it for free if I wanted). However, because of this I can’t fairly compare it.
I personally use both Anaconda and Python(X,Y). I use Anaconda in three places: a Linux cluster where I don’t have access to update the builtin python software, a windows machine where I want python 3.x, and a thumb drive where I use it as a portable distribution. I use Python(X,Y) on a windows machine where I am running a very specific piece of Python 2.x software that has a ton of dependencies, which Python(X,Y) has more of than Anaconda. On my main machines, however, I use the openSUSE Linux distribution, which has more packages than Winpython, Anaconda, and Python(X,Y) put together.