¿Cuál es la forma más eficiente de transferir datos entre MATLAB y Python?

He estado buscando cómo hacer esto y aquí hay una colección de cosas que he encontrado.

MATLAB tiene MATLAB Engine para Python que le permite a Python ejecutar código MATLAB. También hay https://pypi.python.org/pypi/pym… que creo que se basa en el motor MATLAB y desde Python le permite transferir valores a / desde MATLAB, ejecutar alguna expresión en MATLAB y recuperar los valores. Parece estar dirigido a Linux, pero dice que debería funcionar en Windows (¿con algún esfuerzo?). Python iniciará una nueva sesión de MATLAB, así que no estoy seguro de cómo obtener valores de una sesión de MATLAB existente. Si definió algunas variables globales (en MATLAB), puede pasar valores entre sesiones de MATLAB para que pueda obtener valores de una sesión existente de nuevo a Python de esa manera. Así que eso es Python controlando MATLAB.

No estoy seguro de cómo hacer que MATLAB controle Python, ¡pero MATLAB puede ejecutar comandos del sistema usando el! símbolo para que pueda ejecutar un script de python desde MATLAB con:
! python yourscriptname.py
Aún necesitará encontrar una manera de obtener resultados de ese script a MATLAB, tal vez con archivos .mat (vea el siguiente bit)

La forma obvia pero no tan agradable / eficiente de transferir datos entre aplicaciones es escribir los datos en el disco y luego volver a leerlos. Puede escribir los datos en cualquier formato que desee y luego escribir las funciones de análisis de lectura / escritura usted mismo, pero probablemente sea mejor utilizar los métodos existentes:

En MATLAB, las variables se guardan en archivos .mat con el comando save () de MATLAB y se recuperan con load (). El módulo scipy.io de Pythons lee / escribe archivos .mat con loadmat () y savemat ():
SciPy v0.15.1 Guía de referencia

Entonces, con los archivos .mat compartidos, tiene una solución de transferencia de datos bidireccional. He visto comentarios sobre algunas versiones más recientes de archivos .mat que no son compatibles con scipy, pero he movido con éxito matrices de datos con scipy ver 0.13.3 y MATLAB R2014a (8.3.0.532).

Espero que alguien más pueda dar una solución mejor que esta.

1. Matlab (2008 R2) tiene una manera de hablar con Java / hacer alguna programación relacionada con C dentro de Matlab. Entonces, si puedo hacer Java, puedo hacer todo en mi sistema (incluso tomar datos y enviarlos a Python). ¡Java como integrador!

2. Utilice archivos temporales definidos: la forma más sencilla de resolver, simple para los desarrolladores un poco de gastos generales, estoy de acuerdo, pero Matlab es pesado para empezar.

Tenía mucha experiencia con Matlab, solo hice un proyecto de reconocimiento de gestos. Espero que encuentres las respuestas que estás buscando. Buena suerte.