mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Tobias N. (technick2)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jörg W. (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht machst du ja ein Beispiel?

Autor: Fitzebutze (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

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

Autor: Tobias N. (technick2)
Datum:

Bewertung
0 lesenswert
nicht 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.
Autor: Walter T. (nicolas)
Datum:

Bewertung
0 lesenswert
nicht 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()

Autor: Tobias N. (technick2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.