WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Paralleles Arbeiten zweier Funktionen

 

VakiMoon
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 13.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2013, 17:08     Titel: Paralleles Arbeiten zweier Funktionen
  Antworten mit Zitat      
Hallo an Alle,

ich möchte, dass meine Matlab-funktion eine andere .m-Funktion aufruft, aber ohne, dass die erste Funktion aufhört weiter zu rechnen. Die zwiete Funktion soll dann die Ergebnisse zurückschreiben.
Wisst ihr, ob es eine Möglichkeit gitb, dass zwei Funktionen in Matlab parallel zu einander arbeiten, aber dennoch miteinander gekoppelt sind?

ich habe eine ähnliche Frage hier leider nciht gefunden.
Private Nachricht senden Benutzer-Profile anzeigen


VakiMoon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 13.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2013, 17:21     Titel:
  Antworten mit Zitat      
bzw. ich habe eine Socket-Verbindung mit Java erstellt. Matlab ist dabei mein Server. Nun möchte ich einen Thread in Matab aufrufen. Gibt es dafür in Matlab eine Möglichkeit?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.03.2013, 20:44     Titel:
  Antworten mit Zitat      
Hallo,

die Antwort auf die erste Frage ist die Parallel Computing Toolbox.
http://www.mathworks.de/products/parallel-computing/

Was du da genau mit Java machst ist mir noch nicht klar.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
VakiMoon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 13.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.03.2013, 09:58     Titel:
  Antworten mit Zitat      
geht das auch, ohne dass man PC toolbox haben muss?

es ist so: Java berechnet etwas und gibt die Werte an Matlab, Matlab nimmt die Werte an(durch socket-verbindung) und macht damit weitere Berechnungen.
Das Problem ist nur, dass die Werte von Java nicht alle gleichzeitig ankommen, sondern je nachdem, wann die zur Verfügung gestellt werden. Matlab soll nun zwei Funktionen beinhalten, die parallel laufen. Die erste Funtkion nimmt die Werte von Java an und speichert diese. Die zweite Funktion führt ihre Berechnungen nebenbei (unabhängig von allem anderen) durch.
Und genau da hackt es bei mir. Ich weiß nciht, wie ich in Matlab zwei Funktionen parallel zueinander laufen lasse......
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 11.03.2013, 10:32     Titel:
  Antworten mit Zitat      
Hallo,

Java ist eine Programmiersprache. Eine Programmiersprache berechnet nichts. Du meinst die mit Java entwickelte Anwendung.

Harald hat bereits erwähnt, dass du die Parallel Computing Toolbox benötigst. Falls deine Installation diese nicht enthält, musst du wohl sequentiell arbeiten.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
VakiMoon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 13.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.03.2013, 10:49     Titel:
  Antworten mit Zitat      
ahso, ja na gut, ich weiß nicht so recht was Java macht, ich weiß nur, dass die mir die Daten liefert =)

Es gibt ja bei Socket-Verbindung die Möglichkeit einen Thread aufzumachen, zumindest bei Java. kann man das auch bei Matlab anwenden?
Wenn nicht, dann muss ich das wohl wirklich nacheinander ablaufen lassen :/
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.03.2013, 11:28     Titel:
  Antworten mit Zitat      
Hallo,

meine Java-Kenntnisse halten sich in Grenzen und ich kann insbesondere mit Socket-Verbindungen nichts anfangen.
Vielleicht kannst du mal zeigen, wie genau der entsprechende Java-Code aussieht.
Müssen die beiden parallel laufenden Programme miteinander kommunizieren bzw. Daten austauschen? Dann dürfte es kompliziert werden.
Ansonsten könnte man vielleicht sogar zwei separate MATLABs aufmachen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1986
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 11.03.2013, 15:33     Titel: generell wäre es mgl
  Antworten mit Zitat      
Mit java kannst x matlab instanzen aufzumachen (x sollte gleich bzw. -1) deiner CPU Anzahl sein. Wenn du keine Daten untereinander austauschen musst, sollte dies dein Problem lösen. Lohnt sich allerdings auch nur wenn die Funktionen wirklich länger laufen...
Sonst glaube frisst der Aufwand und der Overhead, die Vorteile wieder auf....
Private Nachricht senden Benutzer-Profile anzeigen
 
VakiMoon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 13.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2013, 11:57     Titel:
  Antworten mit Zitat      
ich weiß nicht wie Java Code aussieht. ich weiß nur, dass ich von Java durch Socket-Verbindung einen String bekommen, der meinetwegen so aussieht "etwas = [1 2;3 4]". Das muss ich in Matlab einspeichern. und für meine Berechnungen in Matlab benutzen. Das ist alles kein Problem. es funktioniert. Ich woltle nur, dass die Funktion in Matlab, die die Daten von Java annimmt und die irgendwo abspeichert, parallel zu der Funktion(in Matlab) läuft, die diese Werte dann benutzt.
Aber ich muss doch wohl die beiden Funktionen nacheinander starten lassen, bzw mich um das Parallel Computing Toolbox kümmern =)
na gut, danke trotzdem für eure Hilfe =)
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2013, 22:46     Titel:
  Antworten mit Zitat      
Hallo VakiMoon,

ich verstehe nicht, was der Vorteil davon sein soll, soetwas parallel machen zu wollen.

1. Wert von Socket lesen
2. Mit Wert Berechnung durchführen

Da Schritt 2 von Schritt 1 Informationen braucht, muß 2 sowieso auf 1 warten.
Private Nachricht senden Benutzer-Profile anzeigen
 
VakiMoon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 13.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2013, 10:37     Titel:
  Antworten mit Zitat      
Weil die "Berechnungsfunktion" die ganze Zeit rechnen soll und die Informationen, die sie von der anderen FUnktion benötigt, braucht die viel später.
Man könnte es natürlich so machen, dass die Berechnung durchgeführt wird, -> wenn die Werte braucht, dann holt sie sich aus dem Puffer und rechnet weiter. Geht natürlich.
Ich wollte nur, dass die Infos schon da sind, wenn sie gebraucht werden, ohne dass ich aus der Berechnung raus muss um diese abzuholen.
Es gibt ja bei java die Möglichkeit bei Socket-Verbindung(Vll auch nciht nur) einen Thread aufzumachen. Ich dachte, es könnte in Matlab auch funktionieren, da man ja viele Java-Funktionen in Matlab nutzen kann, aber eben ncith alle. Auf jeden Fall habe ich das nciht hinbekommen :/

aber juht, ohne PC toolbox gehts anscheindn ncith
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2013, 19:51     Titel:
  Antworten mit Zitat      
Wenn Java nicht sehr lange braucht um die Daten durch den Socket zu schicken tuts doch auch eine Funktion:
Code:

rechne + rechne + rechne
wert1 = read_from_socket()
rechne + rechne + rechne
wert2 = read_from_socket()
usw.
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 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.