Forum: Digitale Signalverarbeitung / DSP / Machine Learning Rekursionsformeln automatisiert in Python übersetzen


von Tobias (. (Gast)


Lesenswert?

Für die Lösung einiger Probleme, haben wir Rekursive Formeln erarbeitet, 
welche i.A. von Parametern isolierte Insellösungen finden. Die Lösungen 
sind deshalb in Inseln, weil die beschreibenden Funktionen lokale Minima 
aufweisen. Obendrein haben sie Knicke.

Ich möchte gerne einen Lösungssatz erzeugen, welcher es ermöglicht, bei 
gegebenen Parametern in eine Tabelle zu schauen und einen Ansatz zu 
haben, wie man die Lösungsparameter einstellen kann, um zu einer 
Endlösung zu kommen.

Dafür muss jede Rechnung mit unterschiedlichen Parametern durchgespielt 
werden. Leider haben einige Formeln sehr viele Parameter und es sind 
auch nicht wenige Formeln. Ich habe begonnen, einiges in MATLAB zu 
entwerfen, aber das dauert irgendwie ewig, bis ich die Rekursion 
einprogrammiert und mit Schleifen zur Ansteuerung mit den Parametern 
umgeben habe.

In einem Forum bekam ich den Tipp, es mit Python zu versuchen. Lässt 
sich das irgendwie automatisieren? Ich hätte gern ein script, dass die 
Formel liest und in ein Pythonprogramm übersetzt, das dann seinerseits 
Unterprogramme/-scripte auf die Platte schreibt, die dann die richtige 
Codierung für die einzelnen Fälle enthalten und die mit MATLBA (oder 
eben Python) ausführbar sind.

Denkt ihr, dass das geht?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Vielleicht machst du ja ein Beispiel?

von Fitzebutze (Gast)


Lesenswert?

Tobias N. schrieb:
...
>
> In einem Forum bekam ich den Tipp, es mit Python zu versuchen. Lässt
> sich das irgendwie automatisieren? Ich hätte gern ein script, dass die
> Formel liest und in ein Pythonprogramm übersetzt, das dann seinerseits
> Unterprogramme/-scripte auf die Platte schreibt, die dann die richtige
> Codierung für die einzelnen Fälle enthalten und die mit MATLBA (oder
> eben Python) ausführbar sind.
>
> Denkt ihr, dass das geht?

Ja, schau dir mal das 'generator'-Konzept an. Du kannst dir da deine 
kleine Fabrik aus Funclets erzeugen, mit denen du allenfalls zum Ziel 
kommst.
Aber: Schreib die Formel doch gleich in Python hin, die 
Wiederverwertbarkeit ist besser, und du brauchst die Translation nicht 
extern erledigen, das geht alles prima "inline".

Besser, du schreibst dir dann deine passenden Konverter (auch via 
Generatorklassen), die in Matlab/LaTeX oder was auch immer ausgeben.

So als Beispiel könntest du dir MyHDL anschauen. Das ist eine 
Bibliothek, die Python-Ausdrücke in Hardware-Beschreibung übersetzt. 
Darauf aufbauend gibt es einige Module, die z.B. aus einer Formel die 
entsprechende Hardware-Pipeline generieren und die korrekte Funktion 
überprüfen (simulieren), dem ist vom Python-Funktionsumfang her kaum 
Grenzen gesetzt. Nur das Selbst-Parsen per AST ist etwas schwerfällig.

Es gibt auch Leute die sagen: "Numpy/sciplot ist das bessere Matlab". 
Wenn du nicht zwingend auf matlab-Kompatibilität angewiesen bist.

von J. S. (engineer) Benutzerseite


Lesenswert?

Könnte man die Formeln nicht direkt mit dem Matheprogramm umformulieren 
/ ausformulieren lassen?

von Tobias (. (Gast)


Lesenswert?

Jürgen S. schrieb:
> Könnte man die Formeln nicht direkt mit dem Matheprogramm umformulieren
> / ausformulieren lassen?
Das schwebt mir ja vor :-)

Jörg W. schrieb:
> Vielleicht machst du ja ein Beispiel?
Schwierig. Dann müsste ich konkretes Wissen der Firma darstellen.

Beitrag #5877442 wurde von einem Moderator gelöscht.
von Walter T. (nicolas)


Lesenswert?

Auf Anhieb würde ich sagen: Wenn Du Funktionen durch andere Funktionen 
programmieren willst, machst Du etwas falsch. Meistens gibt es einen 
Ansatz, die gewünschte Funktion systematisch zusammenzusetzen.

Wenn Dich das nicht stört: In Matlab kannst Du natürlich auch Quelltext, 
der in Matlab erzeugt wird, ausführen. eval()/feval()

von Tobias (. (Gast)


Lesenswert?

Walter T. schrieb:
> Auf Anhieb würde ich sagen: Wenn Du Funktionen durch andere Funktionen
> programmieren willst, machst Du etwas falsch.

Ich möchte die Struktur abtrahier analysieren und mit einem Parser oder 
Übersetzer oder Compiler erstellen lassen.

Eine einfache Formel kriegt MATLAB auch ins C übersetzt, aber es erkennt 
nicht, wie man die Rekursion so aufsetzen kann, dass es optimal ist, 
welche Variationen es gibt. Das müsste per Hand ausprobiert und 
simuliert werden. Man kann MATLAB aber diese Randbedingungen nicht 
mitteilen.

Ich kann sie nur verbal fomulieren.

Die Struktur der Formeln ist so ähnlich, dass ich denke, dass es sich 
lohnen müsste, ein Script dafür zu machen. MATLAB reicht aber mit seiner 
Mächtigkeit nicht dafür aus.

Daher kam ich auf Python und sogleich auf die Idee, es komplett in 
Python zu machen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.