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

3-fach for loop in parfor umschreiben

 

shardur
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 24.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2018, 14:22     Titel: 3-fach for loop in parfor umschreiben
  Antworten mit Zitat      
Hallo zusammen,

ich habe einen for-loop, der (stark gekürzt) wie folgt aussieht:

Code:

for i = 1:x
    for j = 1:y
        ergebnis1(j,i) = eine_funktion(in_put(i,j),L1);
        for k = 1:z
            ergebnis2(j,i,k) = eine_funktion(in_put(i,j),L(k));
        end
    end
end
 

x,y,z und die die Matrizen sind natürlich vordefiniert.
Da die Funktion, die immer wieder aufgerufen wird, einige Rechnereien durchführen muss, dauern diese loops ziemlich lange. Ich wollte das zu einem parfor-loop umschreiben, da diese ja viel schneller arbeiten - jedoch bin ein wenig am verzweifeln, da ich es nicht so hinbekomme. Wie müsste mein parfor-loop denn aussehen?

Ich wäre sehr dankbar für euer Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.05.2018, 15:49     Titel:
  Antworten mit Zitat      
Hallo,

in aller Regel hilft es, den Inhalt der parallelen for-Schleife in eine Funktion auszulagern, siehe auch https://www.mathworks.com/videos/se.....ting-tutorials-97719.html, Teil 4.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 24.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2018, 09:51     Titel:
  Antworten mit Zitat      
Ok danke für die schnelle Antwort!

Also erstelle ich mir eine Funktion und greife nur auf die Funktion in parfor zu -richtig? Also wie z.B.

Code:

function [ergebnis1, ergebnis2] = andere_funktion(in_put,L1)

for j = 1:y
        ergebnis1(j) = eine_funktion(in_put(i,j),L1);
        for k = 1:z
            ergebnis2(j,k) = eine_funktion(in_put(i,j),L(k));
        end
end

% Im Code dann:


parfor i = 1:x
        [ergebnis1(:,i), ergebnis2(:,i,:) ] = andere_Funktion(in_put(i,:),L1);
end
 


Habe ich das so richtig verstanden? Und in der Funktion schreibe ich das ganze als for-loop und nicht als parfor- da es sowieso nur als for-loop verwendet wird, wenn ich die Funktion im parfor-loop aufrufe - oder?

Sorry, für die vllt überflüssigen Rückfragen, aber bin in das Thema parfor erst recht frisch eingestiegen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.05.2018, 10:38     Titel:
  Antworten mit Zitat      
Hallo,

genau, probier das mal so. Falls es mit ergebnis2(:,i,:) Probleme gibt, würde ich auf etwas wie ergebnis2(:,:,i) ausweichen und dann mit permute umformatieren.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 24.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2018, 11:35     Titel:
  Antworten mit Zitat      
Ok super - besten Dank!
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 - 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.