Die beiden ersten Schleifen fügen die erste Zeile und Spalte hinzu. Danach sollte mein Code die Matrix nach und nach füllen.
Zitat:
Die Standard-Methode ist das Bewegen des Schleifen-Zählers in den Ausdruck hinein:
Deine Methode funktioniert leider nicht wirklich. Ich habe meinen Code so angepasst:
Code:
D = zeros(n,m);
D(1,1) = 1;
for i = 2:n
D(i,1) = D(i-1,1)+c(i,1);
end for j = 2:m
D(1,j) = c(1,j);
end for i = 2:n
D(i, 2:m) = c(i, 2:m) + min([D(i-1, 2:m),D(i-1,2:m-1),D(i,2:m-1)]);
end
Ich vermute, dass sich das noch deutlich beschleunigen lässt, wenn mir erstmal klar ist, was es überhaupt macht. Es geht um eine [n x m]-Matrix, die zunächst die Werte aus "c" enthält. Dann soll für alle Elemente ausgehend von der Position (1,1) das kleinste Element der linken und oberen benachbarten Elemente addiert werden. Richtig?
Dabei sollte man am besten spalten-weise vorgehen, denn beim bisherigen Zeilen-weisen bearbeiten muss Matlab wild im Speicher herum-springen. Benachbarte Speicherzellen werden aber bevorzugt in den Prozessor-Cache geladen. Starte also mit der Vertauschung der FOR-Schleifen.
Gruß, Jan
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
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.