2016-05-02 24 views
5

C'è un pulitore (come in, idealmente integrato, non ho mai usato Matlab così scuse se ho perso qualcosa di ovvio) modo di fare argin k-più piccolo in Matlab (cioè se un array è [4,5,6,7] dovrebbe restituire gli indici 1,2 in questo ordine) oltre cose del genere:elegant k-smallest argmin in Matlab

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

risposta

4

dire che vogliamo indici di k più piccolo elemento in ordine di arr, quindi:

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

Se si desidera il valore massimo k, utilizzare l'argomento descend in vece.

+0

Indovina che non sono ancora abituato a funzioni casualmente aggiungendo ulteriori parametri di ritorno se chiedi loro ... grr – houbysoft