Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I access a matlab/octave module from python?

I am looking for a way to access a matlab module from python. My current situation is this:

  • I have a python code that does numerical computations by calling Lapack routines while the memory is allocated as ctypes and passed as pointers to the Lapack routines.
  • I also have a matlab module, which is compatible with octave, that does some mathematical tricks I want to use.

My question now is this:
What is an efficient way to keep all the main work in python while at the same time exploit the possibilities that matlab/octave modules offer. Also it would be kind of nice, if my ctype arrays do not have to be converted into some other object in order to run octave. However, I can see that that last point is hard to accomplish.

My current research shows me two possible options:

  1. Pytave: However it seems that this packages is kind of pre alpha?!
  2. Go this humpy road: ctypes -> *.mat file (via numpy) -> octave -> *.mat file -> ctypes (via numpy)
like image 323
Woltan Avatar asked May 26 '11 07:05

Woltan


People also ask

How do I call an octave in Python?

Oct2Py allows you to seamlessly call M-files and Octave functions from Python. It manages the Octave session for you, sharing data behind the scenes using MAT files. Usage is as simple as: >>> oc = oct2py.

Does octave work with Python?

At a high level, the features and capabilities of Octave's Python interface allow a user to: Import and call any Python module or function from the Octave interpreter. Automatically convert basic Octave and Python types seamlessly between the two operating environments.

Can I run MATLAB code in Python?

There are two approaches for calling MATLAB code from Python. The first is to use the MATLAB Engine API for Python, which requires a MATLAB install. The second is to use MATLAB Compiler SDK to compile a Python package that does not require users to have a MATLAB install. Let's first see our MATLAB code.

What is octave in Python?

Octave and Python are open source alternatives to MATLAB, which is widely used by the High Performance Computing Modernization Program (HPCMP) community. These languages are two well known examples of high-level scripting languages that promise to increase productivity without compromising performance on HPC systems.


1 Answers

You can use oct2py, which IIUC was started by its author because pytave didn't work on win32. It is successfully used in IPython through its octavemagic extension and I can tell it is easy to use on its own, the code is maintained (I reported a little Unicode bug and the author fixed it in a day) and works well. Most of the times is as simple as:

>>> from oct2py import octave >>> octave.run("cos(pi / 3)") 'ans =  0.50000' >>> octave.call("foo", a, b)  # Function in foo.m 

For further examples you can check this blog article.

like image 119
astrojuanlu Avatar answered Sep 21 '22 06:09

astrojuanlu