Ich habe diese folgende Schleife für einen Code (der die Histogramme berechnet). Ich schreibe in Matlab. Da ich neu bei Matlab bin, kenne ich keine schnelleren Methoden, dies zu tun. Ich schreibe zur ZeitOptimierung Matlab für Schleife
for i=1:size(b)
a(b(i)) = a(b(i)) + 1;
end
Gibt es schnellere Methoden, dies zu tun, vorzugsweise solche, die nicht die for-Schleife erfordern?
allgemeine Bemerkung: 'size' ist nicht die richtige Funktion für das, was Sie jetzt tun, eher mit [Länge] (http://www.mathworks.nl/help/matlab/ref/length.html) oder [numel] (http://www.mathworks.nl/help/matlab/ref/numel.html). –
Die Idee, dass For-Schleifen ineffizient/langsam sind und wenn möglich ersetzt werden sollten, ist unbegründet. Obwohl Sie diesen Code durch etwas schnelleres ersetzen könnten, würden Sie wahrscheinlich nur einen Bruchteil einer Sekunde sparen. Dies ist nicht das Niveau der Codeoptimierung, um das Sie sich sorgen sollten. – Kavka
@Kavka Über diese Art von for-Schleife würde ich zustimmen. Eine komplexere for-Schleife, die große Matrizen manipuliert, wäre eine Vektorisierung wert, oder? Matlab wurde entwickelt, um mit Matrizen zu arbeiten - alle Matrixoperationen sollen optimiert werden. – Derek