2008-08-07 45 views
9

Naukowiec stworzył małą symulację w MATLAB-ie i chcemy ją udostępnić innym. Mój plan polega na wykonaniu symulacji, wyczyszczeniu kilku rzeczy i przekształceniu ich w zestaw funkcji. Następnie planuję skompilować go do biblioteki C i użyć SWIG, aby utworzyć opakowanie Pythona. W tym momencie powinienem móc wywołać symulację z małej aplikacji Django. Przynajmniej mam taką nadzieję.Czy ktoś ma doświadczenie w tworzeniu biblioteki współdzielonej w programie MATLAB?

Czy mam odpowiedni plan? Czy ktoś inny zrobił coś podobnego? Czy możesz dać mi znać, jeśli są jakieś poważne pułapki, o których w tej chwili nie jestem świadomy?

Odpowiedz

3

Nic nie pomogę, ale pamiętam, że udało mi się owinąć symulację MATLAB w DLL, a następnie wywołać ją z aplikacji Delphi. To działało naprawdę dobrze.

1

Być może spróbuj ctypes zamiast SWIG. Jeśli został on włączony jako część Pythona 2.5, to musi być dobry :-)

2

Najpierw spróbowałbym również ctypes.

  1. pomocą kompilator Matlab kompilacji kodu na C
  2. Kompilacja kod C do DLL.
  3. Stosować ctypes załadować i wywołać kod z tego DLL

Najtrudniejszym krokiem jest prawdopodobnie 1, ale jeśli już wiesz, Matlab i wykorzystali kompilatora Matlab, nie powinien mieć poważne problemy z nim.

5

Należy pamiętać, że kompilator Matlab w rzeczywistości nie kompiluje kodu Matlab do natywnych instrukcji maszynowych. Po prostu łączy go w samodzielny plik wykonywalny lub bibliotekę z własnym silnikiem wykonawczym, który ją uruchamia. Byłbyś w stanie uruchomić swój kod bez zainstalowanego Matlab i mógłbyś go połączyć z innymi językami, ale nadal będzie interpretowany kod Matlab, więc nie byłoby przyspieszenia.