2011-09-26 15 views
6

Tengo el siguiente problema: quiero simular algún sistema de control de ingeniería. Como es bastante complicado, utilicé la computadora para derivar algunas ecuaciones (complicadas) que solo se pueden exportar al código fortran77. En mi pc de desarrollo esto no es problema (máquina Linux).¿Cómo compilar objetos fortran individuales usando el traductor f2c?

No, quiero hacerlo en hardware y aquí tengo que usar un sistema operativo de Windows. Desafortunadamente, matlab no es compatible con gfortran en windows. Por lo tanto, no puedo compilar los archivos fortran en esa caja.

Mi idea ahora era traducir a C, ya que un compilador de C está disponible en matlab on win. ¿Alguna otra (mejor) opción?

Tengo varias SUBRUTINAS en la forma de lo siguiente.

 SUBROUTINE sys_rhs (x, v, dx, param) 
     REAL*8 x(6) 
C  code is coming here 
     RETURN 
     END SUBROUTINE 

¿Es una buena práctica y Funciona para utilizar la función sys_rhs__ en la función de interfaz escrito en C? El problema es que no puedo probarlo ya que no tengo acceso masivo a la máquina de Windows. Entonces debería funcionar si lo intento y no debería necesitar experimentar mucho.

¿También qué lib necesito en Windows? ¿Dónde puedo obtenerlos?

Gracias Cristiano

+1

Traducir a C realmente parece ser la peor opción. Dependiendo de su versión de MATLAB, será compatible con * algún compilador * fortran. Como cualquier compilador de Fortran de los últimos 10-15 años compilará el código f77, solo encuentra otro compilador, el que funciona con MATLAB y usa ese. O si tiene una licencia de linux matlab, use intel's en Linux, es gratis en Linux, si me sirve la memoria. Además, este tipo supuestamente logró obtener gfortran/g95 + matlab para jugar bien, por lo que es posible. – Rook

+0

Como escribí: en Linux no hay ningún problema. Puedo compilar usando gfortran y simular.Pero el hardware está conectado a una máquina de ganar ... En http://www.mathworks.de/support/compilers/R2010a/win32.html solo se menciona el compilador propietario de Intel Fortran (el administrador instala R2010a). –

+0

@ChristianWol: no está muy claro a partir de su pregunta, ¿está hablando de crear archivos Fortran MEX? – Amro

Respuesta

0

La respuesta fue bastante simple: tuve algunos errores de sintaxis en mi código fortran. gfortran no hace tal revisión de sintaxis estricta y por lo tanto interpreta el código fortran correctamente. Después de eliminar los errores tipográficos, logré transcodificar con f2c.

Gracias

-1

hay una mejor solución a todo esto

usar su máquina Linux o su máquina de Windows para implementar la función en C/C++ y luego generar un archivo DLL.

En matlab puede cargar el archivo DLL y realizar una llamada a las funciones que contiene.

aquí hay un sencillo tutorial que muestra cómo llamar al dll con matlab.

http://www.mathworks.com/matlabcentral/fileexchange/15065-example-of-loading-c-dll-and-performance-comparison

+0

La función se implementa en Fortran ya que solo puedo exportar a Fortran en Máxima (sistema de álgebra computacional) como sé. ¿Cómo generar un dll en Linux? MinGW? –

+0

http://www.ibm.com/developerworks/linux/library/l-dll/index.html –

0

Intel vende un muy buen compilador FORTRAN (http://software.intel.com/en-us/articles/fortran-compilers/) que se utilizan para dar de forma gratuita para las pruebas ... ;-)

PS No, no estoy ligado a esta empresa ¡de cualquier manera!

+0

Lo sentimos, el software propietario no es posible porque no es para mí personalmente, sino para mi instituto en la universidad. No están contentos con él, ya que tendrían que manejarlo. –

+1

Así que si Mathlab puede manejar código en DLL (estoy aquí debido a la cuestión de portar-fortran-to-windows no para Mathlab ;-)) Propondría buscar en la dirección ya mencionada de crear una DLL. Esto debería funcionar usando g77 bajo MingGW o Cygwin corriendo bajo Windows. – alk

0

Es posible que desee comprobar el proyecto gnumex, que permite compilar archivos MEX utilizando el conjunto de compiladores GNU GCC (utilizando MinGW o Cygwin), con la capacidad de utilizar g77 para compilar los programas Fortran.

Cuestiones relacionadas