15 Stimmen

Hat jemand Erfahrung mit der Erstellung einer gemeinsamen Bibliothek in MATLAB?

Ein Forscher hat eine kleine Simulation in MATLAB erstellt und wir wollen sie anderen zugänglich machen. Mein Plan ist es, die Simulation zu nehmen, ein paar Dinge zu bereinigen und sie in eine Reihe von Funktionen zu verwandeln. Anschließend möchte ich sie in eine C-Bibliothek kompilieren und mit SWIG einen Python-Wrapper erstellen. Zu diesem Zeitpunkt sollte ich in der Lage sein, die Simulation von einer kleinen Django-Anwendung aus aufzurufen. Zumindest hoffe ich das.

Habe ich den richtigen Plan? Hat jemand anderes etwas Ähnliches gemacht? Können Sie mir sagen, ob es irgendwelche schwerwiegenden Fallstricke gibt, derer ich mir im Moment nicht bewusst bin?

6voto

Dima Punkte 37984

Dabei ist zu beachten, dass der Matlab-Compiler den Matlab-Code nicht in native Maschinenbefehle umwandelt. Er wandelt ihn lediglich in eine eigenständige ausführbare Datei oder eine Bibliothek mit einer eigenen Laufzeit-Engine um, die ihn ausführt. Sie könnten Ihren Code auch ohne installiertes Matlab ausführen und ihn mit anderen Sprachen verknüpfen, aber es handelt sich immer noch um interpretierten Matlab-Code, so dass es keinen Geschwindigkeitsgewinn gibt.

4voto

Michal Sznajder Punkte 9207

Ich werde nicht viel helfen können, aber ich erinnere mich, dass ich eine MATLAB-Simulation in eine DLL einpacken und dann von einer Delphi-Anwendung aus aufrufen konnte. Das hat wirklich gut funktioniert.

2voto

Eli Bendersky Punkte 246100

Ich würde auch zuerst ctypes ausprobieren.

  1. Verwenden Sie den Matlab-Compiler, um den Code in C zu kompilieren.
  2. Kompilieren Sie den C-Code in eine DLL.
  3. Verwenden Sie ctypes zum Laden und Aufrufen von Code aus dieser DLL

Der schwierigste Schritt ist wahrscheinlich Schritt 1, aber wenn Sie Matlab bereits kennen und den Matlab-Compiler verwendet haben, sollten Sie keine ernsthaften Probleme damit haben.

1voto

Bartosz Radaczyński Punkte 18134

Vielleicht versuchen ctypes anstelle von SWIG. Wenn es als Teil von Python 2.5 aufgenommen wurde, dann muss es gut sein :-)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X