2011-09-26 12 views
6

Mam następujący problem: Chcę zasymulować system sterowania. Ponieważ jest to dość skomplikowane, użyłem komputera do wyprowadzenia pewnych (skomplikowanych) równań, które można wyeksportować tylko do kodu fortran77. Na moim komputerze programistycznym to nie problem (maszyna linuxowa).Jak kompilować pojedyncze obiekty fortranowe za pomocą translatora f2c?

Nie Chcę tego robić na sprzęcie i tutaj muszę użyć systemu operacyjnego Windows. Niestety matlab nie obsługuje gfortran w oknach. Dlatego nie mogę skompilować plików fortranów na tym pudełku.

Mój pomysł był teraz przetłumaczony na C, ponieważ kompilator języka C jest dostępny pod adresem matlab przy wygrywaniu. Jakieś inne (lepsze) opcje?

Mam kilka PODRĘCZNIKÓW w następujący sposób.

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

Czy jest dobrą praktyką i to działa, aby korzystać z funkcji sys_rhs__ w funkcji interfejsu napisany w C? Problem polega na tym, że nie mogę go przetestować, ponieważ nie mam masywnego dostępu do maszyny Windows. Powinien działać, jeśli go wypróbuję i nie będę musiał dużo eksperymentować.

Również potrzebuję lib w oknach? Gdzie mogę je zdobyć?

Dzięki Christian

+1

Tłumaczenie na C naprawdę wydaje się najgorszą opcją. W zależności od wersji MATLAB-a będzie on obsługiwał * trochę * kompilatora fortran. Ponieważ każdy kompilator fortran z ostatnich 10-15 lat skompiluje kod f77, wystarczy znaleźć inny kompilator - ten, który pracuje z MATLAB i używa tego. Lub jeśli masz licencję Matlaba na Linuksa, użyj intel-a na Linuksie - darmowego na Linuksie, jeśli pamięć mi służy. Poza tym, ten facet podobno dostał gfortran/g95 + matlab, żeby grać ładnie, więc jest to możliwe. – Rook

+0

Jak napisałem: pod Linuksem nie ma problemu. Mogę skompilować za pomocą gfortran i symulować.Ale sprzęt jest podłączony do wygrywającej maszyny ... Na http://www.mathworks.de/support/compilers/R2010a/win32.html wymieniony jest tylko autorski kompilator intel-fortran (R2010a jest instalowany przez administratora). –

+0

@ChristianWol: z twojego pytania nie wynika jasno, czy mówisz o tworzeniu plików Fortran MEX? – Amro

Odpowiedz

0

Odpowiedź była dość prosta: miałem kilka błędów składniowych w moim fortranowym kodzie. gfortran nie przeprowadza tak ścisłej kontroli składni i dlatego poprawnie interpretuje kod fortranu. Po usunięciu literówek doszedłem do transkodowania za pomocą f2c.

Dzięki

-1

istnieje lepsze rozwiązanie, aby to wszystko

korzystać z urządzenia z systemem Linux lub komputerze z systemem Windows do realizacji funkcji w C/C++, a następnie wygenerować plik DLL.

W programie Matlab można załadować bibliotekę DLL i nawiązać połączenie z funkcjami znajdującymi się w niej.

Oto prosty samouczek, który pokazuje jak wywołać bibliotekę dll za pomocą programu Matlab.

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

+0

Funkcja jest zaimplementowana w Fortranie, ponieważ mogę tylko eksportować do Fortranu w maksimach (system algebry komputerowej), jak wiem. Jak wygenerować bibliotekę dll na Linuksie? MinGW? –

+0

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

0

Intel sprzedaje całkiem dobry kompilator Fortran (http://software.intel.com/en-us/articles/fortran-compilers/), które są używane do rozdania za darmo do testowania ... ;-)

PS Nie, nie jestem związany z tą firmą w jakikolwiek sposób!

+0

Niestety, oprogramowanie własnościowe nie jest sposobem, ponieważ nie jest to dla mnie osobiście, ale dla mojego instytutu na uniwersytecie. Nie są z tego zadowoleni, ponieważ musieliby sobie z tym poradzić. –

+1

Więc jeśli Mathlab może obsługiwać kod w bibliotekach DLL (jestem tutaj z powodu problemu portowania-fortranu do okna nie dla Mathlaba ;-)), proponuję zajrzeć we wspomnianym już kierunku tworzenia biblioteki DLL. Powinno to działać z użyciem g77 pod MingGW lub Cygwin działającego pod Windows. – alk

0

Może chcesz sprawdzić projekt gnumex, który pozwala kompilować pliki MEX za pomocą pakietu kompilatora GNU GCC (używając MinGW lub Cygwin), z możliwością użycia g77 do kompilacji programów Fortran.

Powiązane problemy