|
|
Plotten parallel zu Code-Ausführung |
|
ueg |
Forum-Fortgeschrittener
|
|
Beiträge: 51
|
|
|
|
Anmeldedatum: 15.08.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.01.2022, 12:04
Titel: Plotten parallel zu Code-Ausführung
|
|
|
|
|
Hallo zusammen,
ich werte momentan Versuche mit einem Spektrometer mit Matlab aus.
Dafür lade ich alle 0.5 Sekunden die Daten vom Spektrometer, verarbeite diese in einer FFT und alle 20 Durchgänge werden die Daten geplottet.
Das Prinzip ist stark vereinfacht folgendes:
Das funktioniert soweit hervorragend, nur ist es wichtig, dass alle Messungen genau gleich lange dauern, bzw. dass in konstanten Zeitschritten "get_data" ausgeführt wird.
Solange nicht geplottet wird, funktioniert das auch hervorragend. Der Code an sich dauert um die 0.1s um ausgeführt zu werden. Und dann wird am Ende eben gewartet bis 0.5s rum sind und der Code wird wieder ausgeführt.
Nur das Plotten dauert zu lange, sodass jeder 20. Schritt länger als 0.5s dauert.
Gibt es eine Möglichkeit parallel zur weiteren Code-Ausführung zu plotten? Also, dass Matlab mit der weiteren Code-Ausführung nicht wartet, bis fertig geplottet wurde und direkt parallel zum Plot-Aktualisieren weiter rechnet?
Ich hoffe, das Problem ist verständlich.
Viele Grüße
Tim
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.01.2022, 13:39
Titel:
|
|
Hallo,
es gibt in der Parallel Computing Toolbox schon entsprechende Konstrukte, z.B. spmd. Meine Empfehlung wäre aber eher, mit Timern zu arbeiten.
Hinsichtlich Performance sollte man das "hold on" vor die Schleife ziehen. Zudem kann es helfen, nur die Daten im surf-Plot zu aktualisieren statt die Graphik neu zu generieren.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
ueg |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 51
|
|
|
|
Anmeldedatum: 15.08.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.01.2022, 14:43
Titel:
|
|
|
|
|
Hallo Harald,
vielen Dank für deine Hilfe.
Ich habe mich jetzt übergangsweise mal damit begnügt, die Messungen nach dem Plotten weniger lang warten zu lassen, bis die gesamte Dauer wieder stimmt.
So, dass die 1. Messung bei 0.5s, die 10. nach 5s usw. beendet ist und nicht mehr, dass jede einzelne Messung genau 0,5s dauert.
Das hold on habe ich auch vor die Schleife gezogen und anstatt surf habe ich surface verwendet, das plottet bei mir schneller.
Falls das doch nicht ausreichen sollte an Genauigkeit, schaue ich mir das mit der Parallelisierung noch einmal an. Auf die Schnelle habe ich das nicht hinbekommen..
Viele Grüße
Tim
Edit: Das Ganze wurde noch deutlich verschnellert, indem ich vor der Schleife die ganze Figure eingerichtet und das surf-Element erzeugt habe und später wie du vorgeschlagen hast nur noch zu Aktualisieren.
in der Schleife steht dann nur noch
Falls noch jemand drüber stolpert: Ich hatte eine Weile einen Fehler, dass CData nicht passt. Das Problem gibt's nicht mehr seit ich CData und ZData beiden die "Höhenwerte" zugewiesen habe. Warum das so sein muss, habe ich mir allerdings nicht angeschaut..
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|