ompc ode45 convertir convertidor codigo python matlab visual-c++

ode45 - Llamar a las funciones de MATLAB desde python



ode45 python (9)

2 opciones más para que tengas en cuenta:

  1. Siga los documentos oficiales de MATLAB: Cree una aplicación Python con el código MATLAB . Esto creará una biblioteca de Python que incluye el tiempo de ejecución de MATLAB al que puede llamar desde su código de Python.

  2. Ejecute su código MATLAB en GNU Octave y luego Oct2Py desde Python usando Oct2Py

¿Es posible ejecutar funciones de MATLAB desde dentro de Python? Busco en internet, solo pude encontrar PyMat. Lo malo es que la versión compilada solo es compatible con Python2.2 y estoy usando 2.6. Así que traté de descargar el código fuente, así que puedo compilarlo para mí. Pero no puedo compilarlo, VC ++ express parece no tener las funcionalidades necesarias para compilarlo. ¿Alguien tiene la versión de compilación para PC? o cualquier sustituto de PyMat? Gracias


Existe un puente python-matlab que es único en el sentido de que Matlab se ejecuta en segundo plano, por lo que no tiene el costo de inicio cada vez que llama a una función de Matlab. https://github.com/jaderberg/python-matlab-bridge

es tan fácil como descargar y el siguiente código:

from pymatbridge import Matlab mlab = Matlab(matlab=''/Applications/MATLAB_R2011a.app/bin/matlab'') mlab.start() res = mlab.run(''path/to/yourfunc.m'', {''arg1'': 3, ''arg2'': 5}) print res[''result'']

donde el contenido de yourfunc.m sería algo como esto:

%% MATLAB function lol = yourfunc(args) arg1 = args.arg1; arg2 = args.arg2; lol = arg1 + arg2; end


Me gustaría agregar una opción más al excelente resumen de Lukas:

matlab_wrapper

La ventaja de matlab_wrapper es que es una biblioteca de Python pura y no necesitará compilar nada. Funciona en GNU / Linux, Windows y OSX.

https://github.com/mrkrd/matlab_wrapper

Descargo de responsabilidad: soy el autor de matlab_wrapper


Otra opción es Mlabwrap :

Mlabwrap es un puente de pitón de alto nivel a Matlab® que permite que Matlab parezca una biblioteca de python normal.

Funciona bien con matrices numpy. Un ejemplo de la página de inicio:

>>> from mlabwrap import mlab; from numpy import * >>> xx = arange(-2*pi, 2*pi, 0.2) >>> mlab.surf(subtract.outer(sin(xx),cos(xx)))


Puede utilizar el motor oficial de Matlab instalando Matlab y luego compilando el motor de python a partir de sus archivos externos. Puede consultar el sitio web de la guía a continuación: --- Gracias por el consejo en el primer comentario de esta respuesta --- el paso esencial en breve es (en la plataforma de Windows, otros pueden consultar en la URL a continuación): 1. descargar y luego instale matlab, la versión debe ser R2014 o posterior. 2. abra una ventana de PowerShell bajo admin, luego:

cd "matlabroot/extern/engines/python"

3. use la línea de comando a continuación para instalar:

python setup.py install

El administrador es esencial, o no podrás construirlo.

Para obtener más información, puede hacer clic en la hoja de inicio oficial a continuación: http://cn.mathworks.com/help/matlab/matlab_external/install-the-matlab-engine-for-python.html


PyMat parece que ha sido abandonado.

Supongo que estás en Windows, así que siempre puedes hacer el enfoque más simple y usar la interfaz COM de Matlab:

>>> import win32com.client >>> h = win32com.client.Dispatch(''matlab.application'') >>> h.Execute ("plot([0 18], [7 23])") >>> h.Execute ("1+1") u''/nans =/n/n 2/n/n''

Más información here


Sé que esta es una vieja pregunta y ha sido respondida. Pero estaba buscando lo mismo (para Mac) y descubrí que hay bastantes opciones con diferentes métodos de interacción con matlab y diferentes niveles de madurez. Esto es lo que encontré:

pymat

Una interfaz de bajo nivel para Matlab que utiliza el motor matlab ( libeng ) para la comunicación (básicamente una biblioteca que viene con matlab). El módulo debe compilarse y vincularse con libeng.

http://pymat.sourceforge.net
Última actualización: 2003

pymat2

Una continuación algo breve del desarrollo de pymat. Parece que funciona en Windows (incluidos 64 bits), Linux y Mac (con algunos cambios).

https://code.google.com/p/pymat2/
Última actualización: 2012

mlabwrap

Una interfaz de alto nivel que también viene como un módulo que necesita compilación y vinculación con libeng . Expone las funciones de Matlab a Python para que puedas hacer cosas divertidas como

mlab.plot(x, y, ''o'')

Mlabwrap
Última actualización: 2009

mlab

Un esfuerzo de reenvasado de mlabwrap. Básicamente reemplaza el código de c ++ que vincula contra ''libeng'' en mlabwrap con un módulo de python ( matlabpipe ) que se comunica con matlab a través de un conducto. La principal ventaja de esto es que no necesita compilación de ningún tipo.

Desafortunadamente, el paquete actualmente tiene un par de errores y no parece funcionar en absoluto en el mac. Informé algunos de ellos pero finalmente me rendí. Además, prepárate para muchos trucos y un montón de hacks bastante feos si tienes que entrar en el código fuente ;-) Si esto se vuelve más maduro, podría ser una de las mejores opciones.

https://github.com/ewiger/mlab
última actualización: 2013

pymatlab

Un paquete más nuevo (2010) que también interactúa con Matlab a través de libeng . A diferencia de los otros paquetes, este carga la biblioteca del motor a través de ctypes por lo que no se requiere compilación. No está exento de fallas pero aún se mantiene y los problemas (específicos de Mac de 64 bits) que encontré deberían ser lo suficientemente fáciles de solucionar.
( Editar 2014-05-20 : parece que esos problemas ya se han corregido en la fuente, por lo que las cosas deberían estar bien con 0.2.4)

http://pymatlab.sourceforge.net
última actualización: 2014

puente python-matlab

También un paquete más nuevo que aún se mantiene activamente. Se comunica con Matlab a través de algún tipo de socket. Desafortunadamente las funciones expuestas son un poco limitadas. No pude entender cómo invocar una función que toma estructuras como parámetros. Requiere zmq, pyzmq e IPython que son lo suficientemente fáciles de instalar.

http://arokem.github.io/python-matlab-bridge
última actualización: 2014


las versiones más nuevas de matlab parecen proporcionar un módulo que le permite llamar a las funciones de matlab desde python. mira here y here .