I haben das folgende Problem. Um meine Code-Geschwindigkeit zu erhöhen, versuche ich den Großteil meines Skripts als logische Operation anstatt als for-Schleifen oder ähnliches zu schreiben.
Problem
Ich habe ein sortiertes Array und ich möchte es behalten sortiert, wie ich es als Eingabe für die nächste Funktion sortiert müssen. Um dies zu tun, habe ich den folgenden Code:
target_level=sortrows(target_level,-9);
for i= 1:length(target_level);
ii=find(BML(:,1)==target_level(i,1));
targets(1,i)=ii;
end
Deshalb möchte ich für jedes Element von "target_level(:,1)"
, den Index der Matrix BML zu finden, während die Sortierung zu halten. Um die for-Schleife und schreibt dies als eine logische Operation zu verlieren ich versuchte:
targets=ismember(BML(:,1),target_level(:,1));
targets=find(targets(:,1)==1);
Es kommt mit dem gleichen Ergebnis nach oben, ist das einzige Problem, dass ich die Sortierung verlieren, die mich auf einer Variable angewandt, I möchte nicht wirklich behalten.
Frage
Gibt es eine Möglichkeit, die Sortierung zu halten, während logische Operationen verwendet?
Sie sollten die 'length' Funktion vermeiden, die' size' und ' Numerische Funktionen machen dasselbe, sind aber weit weniger riskant. – Ratbert
In welcher Weise riskant? Ich benutze sie ziemlich viel, wäre gut zu wissen, was das Risiko ist :) – KiW
'Länge' gibt die Anzahl der Elemente in der größten Richtung aus. Wenn Sie also die Größe Ihres Arrays ändern, kann sich 'length' auf die Größe der ersten oder zweiten Dimension beziehen, und eine solche Variabilität in Ihren Schleifen ist im Allgemeinen nicht erwünscht. – Ratbert