I am looking for a way to access a matlab module from python. My current situation is this:
ctypes
and passed as pointers to the Lapack routines. 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:
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.
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.
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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With