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

Sehr lange Laufzeit (mehr als 30 min) bei 2 Schleifen

 

Kai12365
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 15.04.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2019, 10:22     Titel: Sehr lange Laufzeit (mehr als 30 min) bei 2 Schleifen
  Antworten mit Zitat      
Hallo liebe Gemeinde,

ich habe ein kleines Problem was die Zeit meiner Erstellung einer Matrix betrifft.
Ich habe 2 Schleifen mit je 4 Laufindizes.
Es sind insgesamt circa 19.000 Einträge in jeder Schleife
DIe erste durchläuft Matlab problemlos in weniger Sekunden.
Bei der 2. Schleife braucht er für 100 Indizes schon eine Minute.
Ich lasse mir den counter ausgeben und sehe wie langsam es ist, aber verstehe nicht warum. Ich brauche dringend eure Hilfe. Das ist mein Code:
Code:

for i = 1:10
for j = 1:10
for k = 1:14
for l = 1:14
   
counter = counter + 1
s(counter) = 2;
X1(i,k) = X1(i,k) - 1;
X1(j,l) = X1(j,l) - 1;
X = reshape(X1',1,[]);
T1 = {s,X} ;                
V1 = horzcat(T1{:}) ;        

M(counter,:) = V1(:);
X1 =zeros(10,14);
s= zeros(1,10^2*14^2);

end
end
end
end

clearvars i j k l s X1 T1 V1
counter2 = counter;
counter3 = 0;

for i2 = 1:10
for j2 = 1:10
for k2 = 1:14
for l2 = 1:14
counter2 = counter2 + 1    
counter3 = counter3 + 1;
s2(counter3) = -1;
X2(i2,k2) = X2(i2,k2) + 1;
X2(j2,l2) = X2(j2,l2) + 1;
X3 = reshape(X2',1,[]);
T2 = {s2,X3} ;                
V2 = horzcat(T2{:}) ;        

M(counter2,:) = V2(:);
X2 =zeros(10,14);
s2= zeros(1,10^2*14^2);

end
end
end
end
 


Ich habe extra schon die Variablen nach der 1. Schleife alle gelöscht und andere Laufindizes in der 2. Schleife probiert, aber es hilft nichts.
Die Schleifen machen doch beide komplett das Selbe, ich verstehe es nicht.
Was kann ich denn tun ?
Bei kleineren Zahlen funktioniert alles wunderbar. Sie gibt mir auch das aus was sie soll, aber bei dem Beispiel geht es gar nicht.
Auch wenn ich die Variablen zwischen drin nicht cleare dauert es genau so lange.

Liebe Grüße vom Kai !
Private Nachricht senden Benutzer-Profile anzeigen


Kai12365
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 15.04.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2019, 13:47     Titel:
  Antworten mit Zitat      
Kleines Update: Ich habe es jetzt in einer Schleife drin, also nur noch eine Schleife mit 4 Laufindizes und es läuft sehr sehr langsam.
Es hat circa 400 mal die Schleife durchlaufen in 2 Minuten. Da warte ich sehr lange, bis es bei 20.000 ist. Wieso ist es denn, wenn es einmal das ganze macht so schön schnell (40 Sekunden für knapp 20.000 Schleifendurchläufe), aber sobald es bei der 2. Schleife ist, wird es so extrem langsam ?
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.