Python aus Matlab anstoßen

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
M.0.O.
User
Beiträge: 1
Registriert: Dienstag 18. August 2015, 09:09

Hallo liebe Forumnutzer,

ich bin noch ziemlich neu in Python und wahrscheinlich sind mir auch einige sehr grundlegende Dinge noch nicht vertraut. Ich hab zu meinem Problem dennoch nach besten Wissen und Gewissen das Internet sowie dieses Formun durchsucht ohne fündig zu werden (oder habe vielleicht auch nicht verstanden, dass die Vorschläge mein Problem lösen).

Ich möchte gerne aus Matlab eine Funktion aufrufen, welche ich in Python programmiert habe.

Also sieht meine pythondatei in etwa so aus:

Code: Alles auswählen

def export_results(simtime=300 , projectname='Betriebsfall_v0923'):
   ...
   ...
   return [string]
Ich würde demnach gerne Variablen übergeben und auch das Ergebnis der Funktion zurückübergeben.

Kann ich diese Funktion überhaupt extern anstoßen oder lediglich die main-Methode? Diese kann ich über einen kleinen Trick den ich im Internet gefunden habe bereits auslösen allerdings ohne Parameterübergaben.

Mit freundlichem Gruß und der Bitte um Hilfestellung,
Stephan
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo M.0.O.,
direkt Python-Funktionen aufzurufen geht nicht. Das einfachste ist sicherlich, das Pythonprogramm über system aufzurufen, die Eingabeparameter als Kommandozeilenargumente zu übergeben und den Rückgabestring über die Standardausgabe zurückzugeben. Daneben gibt es noch die Möglichkeit, das Pythonprogramm als Server zu programmieren und die üblichen Interprozesskommunikationsmittel zu benutzen. Named Pipes kann Matlab direkt ansprechen, TCP-Sockets über das Java-Interface. Dazu muß man sich aber schon sehr gut mit Python und Matlab auskennen. Dritte und komplizierteste Möglichkeit ist eine Mex-Bibliothek mit integriertem Python-Interpreter. Dann kommen noch gute C-Kenntnisse dazu. Die Variante habe ich selbst noch nicht versucht, weil ich bisher immer am katastrophalen Speichermanagement von Matlab gescheitert bin.
Antworten