Von matlab zu python

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
tomatensalat
User
Beiträge: 1
Registriert: Montag 18. Dezember 2017, 16:57

Ich habe einen Matlab code den ich in python umwandeln möchte. Gibt es eine Möglichkeit das ohne smop machen kann. Der Code ist zu lang, um es mit einem online converter zu convertieren
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@tomatensalat: ein Konverter wird kaum ideomatisches Python erzeugen können. Typisches vorgehen ist, genug Testcases für jede Matlab-Funktion zu schreiben, um sicher zu sein, dass das konvertierte Python die selben Ergebnisse liefert. Meist sind die beiden Welten aber so weit auseinander, dass man quasi nur den Algorithmus kopieren kann, nicht aber den Code an sich.

`smop` ist ja kein Onlinekonverter, daher versteh ich die Frage auch nicht ganz.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

tomatensalat hat geschrieben:Ich habe einen Matlab code den ich in python umwandeln möchte. Gibt es eine Möglichkeit das ohne smop machen kann. Der Code ist zu lang, um es mit einem online converter zu convertieren
Numpy, Scipy und Matplotlib sind Python Bibliotheken die der Matlab Syntax mit viele Liebe zum Detail nachempfunden sind:
  • Die Slicing-Syntax ist gleich: z.B. a[:, 2:5] gibt alle Zeilen und die Spalten 3 bis 5.
  • Sehr viele Funktionen haben die gleichen Namen und die gleiche Funktionsweise, z.B. linspace, subplot(211)
Es gibt aber auch Unterschiede:
  • Es gibt keinen Simulink Ersatz in Python.
  • Der Array-Zugriff erfolgt über eckige Klammern [] und nicht über Runde Klammern ()
  • Viele Funktionen aus den Matlab-Toolboxen fehlen
  • Array-indizes sind in Matlab (glaube ich) 1-basiert, in Python sind sie 0-basiert
Es gibt keinen automatischen Konverter. Wenn du es von Hand machen willst, empfehle ich dir zunächst zu überprüfen ob alle verwendeten Matlab-Funktionen in Numpy, Scipy oder Matplotlib vorhanden sind.
a fool with a tool is still a fool, www.magben.de, YouTube
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@MagBen: die Slicing-Syntax unterscheidet sich fundamental. start:schritt:ende_inklusive bei Matlab und start:ende_exclusive:schritt bei Python. Indizierung ab 1 bei Matlab, 0 bei Python. Matlab hat bei allem call-by-value, Python call-by-object. Matlab hat dynamische Arrays, Numpy statische. Viele Funktionen arbeiten subtil anders. All diese Punkte machen es sehr schwer, komplexere Matlabskripte in Pythonprogramme zu überführen.
Antworten