martes, 17 de noviembre de 2009

Compilar FORTRAN 77 desde Matlab

Para los que en algún momento han necesitado compilar un código escrito en FORTRAN 77 desde Matlab, les presento una manera de realizar esta importante tarea.

Dentro del entorno de Matlab existe una función la cual nos permite poder compilar programas escritos en otros lenguajes de programación distintos a los escritos con extención .m en Matlab, pudiendo de esta manera ser ejecutados desde la pantalla de comandos de Matlab como si estuviéramos ejecutando una función *.m. La función que nos proporciona Matlab para poder realizar esta operación es la función mex, la cual en forma general se especifica de la siguiente forma:

>> mex [option] [file]

La función mex utiliza un compilador para lograr su ojetivo de compilar codigos escritos ya sea en C o en FORTRAN, por lo cual es necesario especificarle a la función mex el compilador más apropiado para la tarea a realizar. Lo anterior se logra tipiando, desde la pantalla de comandos de Matlab, la siguiente linea:

>> mex -setup

Matlab por defecto trae un compilador llamado lcc el cual permite desde la pantalla de comandos de Matlab, compilar codigos escritos C. Pero existe un problema, al parecer este compilador no es capaz de compilar códigos escritos en FORTRAN 77. Siendo necesario, para el caso en que se quiera compilar archivos escritos en FORTRAN, utilizar otro tipo de compilador distinto a el lcc, estamos hablando de los compiladores de la familia Intel Visual Fortran, compilador el cual no es gratuito.

Para poder hacer uso de este magnífico compilador, es necesario descargar la aplicación MinGW la cual nos ayuda a realizar una instalación guiada de distintos compiladores utilizados en las distribuciones Linux. Dentro de los compiladore disponibles se encuentran el gcc, g++ y g77. Para efectuar esta instalación se debe de descargar MinGW desde la siguiente dirección: www.mingw.org. En dicha dirección seleccionar "Downloads" y después "Sourceforge File Release" . De la lista de archivos descargar "Automated MinGW Installer" , luego ejecutarlo e instalar el compilador g77 y si es necesario tambien los demás.

2 comentarios:

Anónimo dijo...

Buenas,
Estoy aprendiendo para poder utilizar código de Fortran en Matlab con la función mex.
Mi entorno de trabajo es windows.

El compilador que tiene que ser instalado para poder ejecutar código Fortran en Matlab ¿es válido para windows? Y de ser posible ¿que es lo que tengo que instalar?

Por último, para convertir un fichero de C o de Fortran en un .mexw32 con poner está sentencia en la línea de comandos sería suguciente:

mex fichero.c

Gracias y un saludo desde España.

Anónimo dijo...

Hola, encuentro muchos posts al respecto de llamar funciones escritas en fortran desde matlab, soy ingeniero civil, no entiendo mucho de lo que todos ponen en sus posts, a manera de sugerencia; estaría bien que más que hablar al respecto, pusieran pasos, o un ejemplo claro, una simple suma, o algo así para que uno que no sabe mucho de compiladores, extensiones, etc., pueda sacarle provecho a la info, por que así como uno entra al post, igual sale, sin nada que ayude a resolver el problema. Tengo mucho tiempo usando matlab, pero hasta ahora me topé con la necesidad de usar un programa en fortran desde matlab. Espero lo tomen con filosofía y como crítica constructiva, que esa es mi intención. Seguiré buscando, gracias.