2016-05-02 13 views
5

Gibt es eine sauberere (wie in, idealerweise eingebaut; ich habe Matlab so entschuldigt, wenn ich etwas offensichtlich verpasst) Weg zu tun k-kleinste Argmin in Matlab (dh wenn ein Array ist [4,5,6,7] sollte die Indizes 1,2 in dieser Reihenfolge) neben Sachen wie zurückgeben:elegante k-kleinste argmin in Matlab

arr = [4,5,6,7]; 
[~, argmin1] = min(arr); 
arr(argmin1) = Inf; 
[~, argmin2] = min(arr); 
... 

Antwort

4

Sagen wir arr, dann in Array-Indizes von k kleinstem Elemente wollen:

arr=[4,5,6,7,2]; 
[~,indices]=sort(arr,'ascend'); 
argmin=indices(1:k); 

Wenn Sie die höchsten Werte k möchten, verwenden Sie descend Argument in Statt.

+0

Raten Sie, ich bin immer noch nicht gewohnt, Funktionen zufallsbedingt zusätzlichen Return-Parameter hinzufügen, wenn Sie danach fragen ... Grr – houbysoft

Verwandte Themen