Skip to content

alddiaz/matlab_wrapper

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

matlab_wrapper

MATLAB wrapper for Python

Name:matlab_wrapper
Author:Marek Rudnicki
Email:[email protected]
URL:https://github.com/mrkrd/matlab_wrapper
License:GNU General Public License v3 or later (GPLv3+)

Description

matlab_wrapper allows you to use MATLAB in a convenient way in Python. You can call MATLAB functions and access workspace variables directly from your Python scripts and interactive shell. MATLAB session is started in the background and appears as a regular Python module.

matlab_wrapper talks to MATLAB engine library using ctypes, so you do not have to compile anything!

Numerical, logical, struct and cell arrays are supported.

Usage

Initialize:

import matlab_wrapper
matlab = matlab_wrapper.MatlabSession()

Low level:

matlab.put('a', 12.3)
matlab.eval('b = a * 2')
b = matlab.get('b')

Workspace:

s = matlab.workspace.sin([0.1, 0.2, 0.3])

sorted,idx = matlab.workspace.sort([3,1,2], nout=2)

matlab.workspace.a = 12.3
b = matlab.workspace.b

More examples are in the examples directory!

Requirements

  • Python (2.7)
  • Matlab (various versions)
  • Numpy (1.8)

Platforms

If you are using matlab_wrapper with MATLAB version and OS not listed below, please let us know and we will update the table.

OS [1] MATLAB Bits [2] Status
GNU/Linux 2014b (8.4) 64 working (pre-release, py.test OK)
GNU/Linux 2014a (8.3) 64 only double arrays working [3]
GNU/Linux 2013b (8.2) 64 working (py.test OK)
GNU/Linux 2013a (8.1) 64 working (py.test OK)
Windows 2014a (8.3) 64 working (py.test OK)
OS X 2014a (8.3) 64 only double arrays working [3]
OS X 2013a (8.1) 64 working
[1]OSX support is not very good, because cannot test it. It should work, but if you have problems, let me know and we might figure it out.
[2]I have tested only 64-bit systems. If you are interested in 32-bit version, please contact me per email or open an issue on GitHub.
[3](1, 2) Due to bug in engGetVariable: Error using save, Can't write file stdio.

Installation

pip install matlab_wrapper

Issues and Bugs

https://github.com/mrkrd/matlab_wrapper/issues

Alternatives

(last updated on June 17, 2014)

  • pymatlab
    • pure Python, no compilation, using ctypes (good)
    • quite raw (ugly)
    • memory leaks (bad)
  • mlabwrap
    • cool interface, mlab.sin() (good)
    • needs compilation (bad)
    • not much development (bad)
  • mlab
    • similar interface to mlabwrap (good)
    • using raw pipes (hmm)
    • there is another very old package with the same name (ugly)
  • pymatbridge
    • actively developed (good)
    • client-server architecture with ZeroMQ and JSON, complex (ugly)
    • missing basic functions, there's no put (bad)
    • nice ipython notebook support (good)

Note: There is a nice overview of the available packages at StackOverflow.

Acknowledgments

matlab_wrapper was forked from pymatlab.

MATLAB is a registered trademark of The MathWorks, Inc.

Donations

If matlab_wrapper is useful for your work, please consider making a donation. It will be a great feedback!

About

MATLAB wrapper for Python

Resources

License

Stars

Watchers

Forks

Packages

No packages published