2016-05-02 8 views
5

में सुरुचिपूर्ण के-सबसे छोटा Argmin क्या कोई क्लीनर है (जैसा कि आदर्श रूप से बनाया गया है; मैंने मैटलैब का उपयोग कभी नहीं किया है अगर मैं कुछ स्पष्ट याद करता हूं) Matlab में k-smallest argmin करने का तरीका (यानी यदि कोई सरणी है [4,5,6,7] यह है कि आदेश में अनुक्रमित 1,2) लौटना चाहिए की तरह सामान के अलावा:मैटलैब

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

उत्तर

4

तो, कहते हैं कि हम सरणी arr में k सबसे छोटा तत्व के सूचकांकों हैं:

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

यदि कोई k उच्चतम मान चाहता है, तो descend तर्क का उपयोग करें जगह।

+0

मान लीजिए कि मैं अभी भी अतिरिक्त रिटर्न पैरामीटर जोड़कर यादृच्छिक रूप से काम करने के लिए उपयोग नहीं कर रहा हूं यदि आप उनके लिए पूछते हैं ... grr – houbysoft