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

Code verbesseren

 

Hild53

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2012, 16:56     Titel: Code verbesseren
  Antworten mit Zitat      
Hallo
ich habe folgende code geschrieben. es dauert lange Zeit, dass ich mein Programm ausführen kann. es wäre sehr nett, falls jemand mir sagt, wie die verbessern kann. danke.
Code:

for k=2:53
  for i=1:length(res_trip1)
     for j=1:length(Interpoli{k})
      dist{j}=sqrt((res_trip1(i,1)-Interpoli{k}(j,1))^2+(res_trip1(i,2)-Interpoli{k}(j,2))^2);    
     end
    %[~,ind]=min(dist);
     [min_dis{i},ind]=min(dist{i});
     res_trip{k}(i,:)=Interpoli{k}(ind,:);
  end
end
 


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.07.2012, 19:12     Titel:
  Antworten mit Zitat      
Hallo,

bitte sicherstellen, dass die Variablen vorbelegt sind und nicht dynamisch wachsen (preallocation).

Auf den ersten Blick meine ich, dass die innere for-Schleife ersetzt werden kann. Mir schwebt sowas vor:
Code:
dist=sqrt((res_trip1(i,1)-Interpoli{k}(:,1)).^2+(res_trip1(i,2)-Interpoli{k}(:,2)).^2);  


Damit man sicher sein kann, dass das geht, müsste man jedoch über die Dimensionen der Variablen etc. Bescheid wissen. Ein Beispiel, das man testen kann, wäre wie immer gut.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2012, 19:37     Titel:
  Antworten mit Zitat      
hallo,
Danke fuer deine Antwort.
ich habe eigentlich 53 matrizen mit verschieden Dimensionen. mein Ziel ist es:
Abstand jedes elementes von Interpoli{k} mit jeder element von res_Trip1 berchne und minimum davon in rest_trip{j} speichern. z.b
res_trip{2}(1,1)=min(distance t111 und jeder element von Interpoli{2}) usw.
da ich fuer jeder element der res_trip1 Abstand von jeder element von Interpoli{2} berechnen soll, dauert es lange Zeit! stell dir vor, wie lange konnte es fuer 52 Matrizen dauern! Question Exclamation Rolling Eyes
Danke fuer deine Hilfe.
 
Harald
Forum-Meister

Forum-Meister


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

jetzt hast du erklärt, was dein Programm macht. Ich muss zugeben, dass ich da auf Anhieb nicht durchblicke.

Die Frage bleibt, ob dir meine Anregungen weiterhelfen.

Wie groß sind die Matrizen, und wie lange dauert es?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.07.2012, 20:22     Titel:
  Antworten mit Zitat      
Hallo Hild53,

Wenn Du realistische Testdaten (rand?!) zur Verfügung stellen würdest, könnten wir deinen Code laufen lassen, Verbesserungen probieren und bei Erfolg hier vorschlagen. Ohne Daten ist zu viel Raterei notwendig.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Hild53

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2012, 21:58     Titel:
  Antworten mit Zitat      
hallo Harald,
danke fuer deine Antwort.
ich habe leider bis jetzt deinen vorschlag nicht getestet! wie gesagt unterschiedlich.es dauer fast stunde, dass ich meine Antwrot kriege Twisted Evil
also matrizen hat ab 26583x4, 23564x4.... ich kann leider nicht die daten hier hochladen Sad
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.07.2012, 22:06     Titel:
  Antworten mit Zitat      
Hallo,

wie von Jan gesagt: wenn du mit rand Testdaten konstruierst, die deinen tatsächlichen Daten in Datentyp und Dimensionen gleichen/ähneln, dann reicht das vollkommen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2012, 22:15     Titel:
  Antworten mit Zitat      
hallo,
stell dir vor:

res_trip1= 9.999 52.677
9.889 52.765
9.786 52.875

Interpoli{2}= 9.567 52.834
9.345 52.543


also moechte ich jetzt distanz brechnen und min davon nehmen.

z.b
rest_trip{1}= 9.734 52.456
9.745 52.734


usw
 
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.