|
|
Mehrere Matlab-Funtkionen gleichzeitig |
|
janh |
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 26.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.05.2014, 13:25
Titel: Mehrere Matlab-Funtkionen gleichzeitig
|
|
|
|
|
Hallo zusammen,
ich habe leider noch nicht so viel Erfahrung mit Matlab und komme deswegen gerade nicht weiter.
Ich habe eine GUI erstellt, bei der über einen Startknopf mehrere Funktionen gestart werden sollen. Die gestarten Funktionen sollen gleichzeitg laufen.
So soll z. B. beim Drücken des Startbutton die Funktion "sende Triggersignal" und die Funktion "abfrage Messinstrument" gestartet werden.
Die Funktion "sende Triggersignal" sendet kontinuierlich ein Signal an ein Messgerät, gleichzeitig soll "abfrage Messinstrument" das Messgerät nach Messwerten abfragen lassen.
Über einen Stopbutton sollen die beiden Funktion ggf. beendet werden können.
Ich habe schon das Forum und die Matlab-Hilfe durchsucht, bin aber leider nur auf die Parallel Computing Toolbox gestoßen. In der Toolbox finde ich leider irgendwie keinen Befehl der auf meine Anwendung zutrifft.
Könnt ihr mir da vielleicht jemand weiterhelfen?
Gruß Jan
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.05.2014, 20:37
Titel:
|
|
Hallo,
die Parallel Computing Toolbox ist die Toolbox schlechthin für die gleichzeitige Ausführung mehrerer Programme.
Welche Befehle hast du dir angesehen, und inwiefern leisten sie nicht das, was du benötigst?
Grüße,
Harald
|
|
|
janh |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 26.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.05.2014, 11:09
Titel:
|
|
Hallo Harald,
Vielen Dank für deine Antwort.
Habe mir die Batch-Funktion angeschaut und ausprobiert. Die Funktion wirkt beim ausprobieren etwas träge bzw. Funktion innerhalb der der Batch-Funktion werden Funktionen relativ langsam ausgeführt. Kann es sein oder kommt es nur mir so vor?
Wei? leider nicht welche Funktione:
batch
createjob
spmd
parfo
Die optimale Lösung für meinen Fall ist.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.05.2014, 11:16
Titel:
|
|
Hallo,
mit batch müssen zunächst weitere MATLAB-Sitzungen gestartet werden. Danach sollte alles flott laufen.
Was ich versuchen würde:
Die andere Frage ist natürlich, ob das Messgerät überhaupt von zwei Prozessen gleichzeitig angesteuert werden kann.
Zu Parallel Computing gibt es auch eine Tutorial-Reihe:
http://www.mathworks.de/products/pa.....-computing/tutorials.html
Grüße,
Harald
|
|
|
janh |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 26.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.05.2014, 20:51
Titel:
|
|
Hallo,
werde dein Vorschlag mal versuchen. Leider kann ich es erst am Montag machen.
Hab mal mir auch die Tutorial-Reihe angeschaut. Die batch-Funktion ist eigentlich schon das ich bräucht: Ich stecke z. B. eine Funktion in eine eigene Matlab-Sitzung. Die Matlab-Sitzung läuft dann so lange, bis die Sitzung beendet wird.
Ist dann wie bei C++ und der Thread bildung.. oder?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.05.2014, 21:43
Titel:
|
|
Hallo,
den Nachteil bei batch sehe ich darin, dass du während des Batch-Jobs schlecht von außen abbrechen kannst - außer du brauchst keine Ergebnisse mehr von dort, dann kannst du den Batch-Job mit delete "abschießen".
Batch-Jobs in einer for-Schleife (ähnlich wie bei meinem Vorschlag mit spmd) wären nicht sinnvoll, da die MATLAB-Sitzungen ja jedes Mal von neuem gestartet werden müssen.
Meine Tendenz ginge zum spmd-Ansatz.
Grüße,
Harald
|
|
|
janh |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 26.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.05.2014, 22:33
Titel:
|
|
hmmm...
ich könnte die batch am Anfang des Programms initialisieren. In der batch läuft dann eine Schleife zum abfragen der Messwerte. Am Ende Programms lasse ich mir dann Messwerte zurückgegeben und beende die batch.
Müsste doch gehen oder?
Harald, vielen Dank für deine Hilfe.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.05.2014, 22:40
Titel:
|
|
Hallo,
du hast anfangs geschrieben:
Zitat: |
Über einen Stopbutton sollen die beiden Funktion ggf. beendet werden können. |
Die Information, ob der Stopbutton gedrückt wurde, dürfte innerhalb der batch-Session aber schwer zugänglich sein.
Grüße,
Harald
|
|
|
janh |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 26.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.05.2014, 22:44
Titel:
|
|
Meinst du mit "schwierig" unmöglich oder nur schwierig?
Ich mache mal eine Beispiel und probier es auch aus.
|
|
|
janh |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 26.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.05.2014, 15:06
Titel:
|
|
Hallo,
habs heute noch mit einer anderen Möglichkeit probiert und zwar mit "createJob" und "Task".
Habe dafür beim Programmstart einen Job intialisiert:
Bei beim Startbutton drücken wird ein Funktion mit einem Task ausgeführt:
Function für die Abfrage der Messwerte, die in dem Task gestartet wird (ist ein Test ob der Task beim drücken der Stoptaste beendet wird)
Es funktioniert leider nicht Ist es überhauptmöglich von außen auf den Task zuzugreifen?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.05.2014, 18:02
Titel:
|
|
Hallo,
genau das meinte ich. Dir muss klar sein, dass die Tasks separate Prozesse sind, die theoretisch sogar auf anderen Rechnern laufen könnten.
Die einzige Möglichkeit, die ich sehen würde: bei Stopbutton eine Datei schreiben, und in der Task abfragen, ob die Datei schon erstellt ist. Das funktioniert aber nur auf einem Rechner bzw. bei Rechnern, die ein gemeinsames Netzlaufwerk oder ähnliches haben.
Aber sag mal: was hält dich denn davon ab, den spmd-Ansatz zu verwenden?
Grüße,
Harald
|
|
|
janh |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 26.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.05.2014, 20:25
Titel:
|
|
Hallo Harald,
danke für die Bestätigung, dann brauch ich nicht mehr probieren irgendwelche Werte an den Task zu geben.
Mit deinem spmd-Ansatz habe ich es leider noch ned Probiert. Ich müsste in z. B. in case 1 eine Funktion aufrufen können:
Möchte damit ein kontinuierliches Rechtecksignal erzeugen und das dann gleichzeitig aber wieder abfragen.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.05.2014, 20:42
Titel:
|
|
Hallo,
Zitat: |
Mit deinem spmd-Ansatz habe ich es leider noch ned Probiert. |
Dann mach das doch mal :)
Zitat: |
Ich müsste in z. B. in case 1 eine Funktion aufrufen können: |
Kannst du ja. In case 1 kann alles stehen, was du willst.
Grüße,
Harald
|
|
|
janh |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 26.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.05.2014, 21:18
Titel:
|
|
Zitat: |
Dann mach das doch mal
|
Ich werde es morgen probieren
|
|
|
janh |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 26.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.05.2014, 09:10
Titel:
|
|
Schau mir gerade den spmd-Anschatz an.
Nur zum Verständnis für mich. Mit der spmd Funktion wird dem Worker 1 und dem Worker 2 jeweils die die switch-Anschweisung zugewiesen und je nach Worker-Nummer wird case 1 oder case 2 ausgeführt . Dies wird so lange gemacht bis Stop gleich z. B. false.
Worker 1:
Führt case 1 aus
Worker 2:
Führt case 2 aus
Start ich dann immer neue Task in dem Job? Denke ich da richtig?
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|