Usar Python desde Matlab

Publicado el 29 noviembre 2019 por Daniel Rodríguez @analyticslane

Una de las capacidades menos conocidas de Matlab es la posibilidad de ejecutar directamente código Python desde la consola o un script. Accediendo a ellas de una forma completamente transparente. Lo que permite ampliar rápidamente las capacidades de Matlab con todas las funciones o librerías que existen en Python. En esta entrada se va a mostrar cómo hacer para llamar funciones de Python desde Matlab.

Llamar funciones de Python desde Matlab

La forma de acceder a las funciones u objetos de Python en Matlab es mediante el paquete py. Siendo las propiedades de este paquete las funciones y paquetes de Python. Así, para llamar a una función de Python solamente se tiene que escribir esta como una propiedad de py. Por ejemplo, para imprimir el mensaje "Hola Python" solamente se tiene que escribir la siguiente línea

py.print('¡Hola Python!')

Por otro lado, para acceder a las funciones de una librería de Python no es necesario importar esta, ya que las instaladas son una propiedad de py. Así para comprobar la versión de Python que se está utilizando se puede usar.

py.sys.version
  Python str with no properties.

    2.7.16 (default, Oct 17 2019, 17:14:30) 
    [GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.32.4) (-macos10.15-objc-s

Cambiar la versión de Python empleada en Matlab

En el ejemplo anterior se ha visto que Matlab usa por defecto la instalación de Python del sistema. En el caso de las versiones actuales de macOS Python 2.7. Pero se puede modificar para llamar a cualquier otra instalación. Por ejemplo, una distribución de Anaconda. Obteniendo de esta manera el acceso a todos los paquetes que se instalan por defecto en esta distribución como scikit-learn.

La función de Matlab para cambiar las opciones es pyversion(). Una función que solamente se puede llamar desde si no se ha utilizado Python previamente en la sesión. Por lo que en nuestro caso es necesario reiniciar Matlab. Una vez reiniciado Matlab simplemente se tiene que pasar como parámetro la ruta a la instalación de Python.

pyversion('/anaconda/bin/python'),

A partir de ahora la instalación de Python que usará Matlab será la que le hemos indicado en la ruta. Por ejemplo, se podrá crear un objeto KMeans simplemente escribiendo:

py.sklearn.cluster.KMeans()

Llamar a funciones en archivos de Python

Otra opción, que posiblemente sea la más interesante, es llamar a código que se tenga en Python. Permitiendo reutilizar el trabajo realizado en Matlab. Para lo que se tiene que guardar el código en un archivo con extensión py, archivo que pasa a ser una propiedad del paquete py. Por ejemplo, se puede guardar el siguiente archivo como functions.py y acceder a las funciones simplemente.

suma  = py.functions.sum(2, 3)
cuadrado = py.functions.squared(2)

conclusiones

En esta entrada se han visto los fundamentos para poder utilizar Python en Matlab. Pudiendo así utilizar las librerías de Python en un entorno Matlab. Algo que ofrece múltiples posibilidades.

Imágenes: Pixabay (Michael Schwarzenberger)