I have a bunch of MATLAB code from my MS thesis which I now want to convert to Python (using numpy/scipy and matplotlib) and distribute as open-source. I know the similarity between MATLAB and Python scientific libraries, and converting them manually will be not more than a fortnight (provided that I work towards it every day for some time). I was wondering if there was already any tool available which can do the conversion.
Asked
Active
Viewed 3.4e+01k times
176
-
9another possibility is to release your source code as is, and test it in Octave (www.gnu.org/software/octave) which has 99% matlab competability. – oz123 Mar 26 '12 at 05:22
-
6@josliber: Can we move this question to http://softwarerecs.stackexchange.com so that it can be reopened? – Anderson Green Aug 07 '16 at 19:54
-
@andersongreen the question is too old for migration – josliber Aug 07 '16 at 20:20
-
2I think now the best way to do this is to use matlab built-in tool [mcc](https://www.mathworks.com/help/mps/ml_code/mcc.html) – zxch3n Nov 14 '18 at 13:45
2 Answers
186
There are several tools for converting Matlab to Python code.
The only one that's seen recent activity (last commit from June 2018) is Small Matlab to Python compiler (also developed here: SMOP@chiselapp).
Other options include:
- LiberMate: translate from Matlab to Python and SciPy (Requires Python 2, last update 4 years ago).
- OMPC: Matlab to Python (a bit outdated).
- Mat2py: Matlab to Python (Requires Python 2).
Also, for those interested in an interface between the two languages and not conversion:
pymatlab
: communicate from Python by sending data to the MATLAB workspace, operating on them with scripts and pulling back the resulting data.- Python-Matlab wormholes: both directions of interaction supported.
- Python-Matlab bridge: use Matlab from within Python, offers matlab_magic for iPython, to execute normal matlab code from within ipython.
- PyMat: Control Matlab session from Python.
pymat2
: continuation of the seemingly abandoned PyMat.mlabwrap
, mlabwrap-purepy: make Matlab look like Python library (based on PyMat).oct2py
(repository): run GNU Octave commands from within Python.pymex
: Embeds the Python Interpreter in Matlab, also on File Exchange.matpy
: Access MATLAB in various ways: create variables, access .mat files, direct interface to MATLAB engine (requires MATLAB be installed).- MatPy: Python package for numerical linear algebra and plotting with a MatLab-like interface.
Btw might be helpful to look here for other migration tips:
On a different note, for people who might find it useful there is:

0 _
- 10,524
- 11
- 77
- 109
-
3Does anyone have a comment on which of these works best or which cases fail? – Chogg Jul 25 '14 at 12:32
-
8I haven't tested them yet either, but it seems like smop has the sole distinction of being actively maintained, by the original developer, on github, with a test suite. – Andrew Wagner Sep 03 '14 at 12:21
-
which one is the fastest to call matlab functions out of the methods establishing an interface? – Viktor Tóth Oct 19 '18 at 03:26
8
There's also oct2py which can call .m files within python
https://pypi.python.org/pypi/oct2py
It requires GNU Octave, which is highly compatible with MATLAB.

norweeg
- 101
- 1
- 4