2011-11-11 7 views

उत्तर

4

कैसे min(abs(data - b))?

i_lower = find(data <= b,1,'last'); 
i_higher = find(data >= b,1,'first'); 

lower_than_b = data(i_lower) 
higher_than_b = data(i_higher) 
+8

abs को मत भूलना ... – madth3

9

अगर डेटा सॉर्ट हो जाता है आप पाते हैं का उपयोग कर सकते हैं। वेक्टर data को सॉर्ट नहीं किया जाना चाहिए और b सकारात्मक या नकारात्मक हो सकता है।

ind=knnsearch(data',b) c=data(ind)

जो सूचकांक रिटर्न (या सूचकांक के सरणी):

[~,I] = min(abs(data-b)); 
c = data(I); 
0
data = [1 1.2 1.3 1.5 1.8] 

b = 1.23 

find(abs(data-b)==min(abs(data-b))) 
+1

यह इस पोस्ट में उत्तर के रूप में पहले से ही जो कुछ भी रखा गया है उससे ज्यादा कुछ नहीं जोड़ता है। – rayryeng

1

इस विधि मामले में जहां b में कई तत्वों है कि आप खोज रहे हैं देखते हैं करने के लिए संदेह के जवाब सामान्यीकरण करता , में निकटतम तत्व (या तत्व) में b में सूचीबद्ध तत्वों के लिए।

ध्यान दें कि डेटा ट्रांसफर किया गया है क्योंकि सेट को खोजने के लिए कॉलम वेक्टर होने की आवश्यकता है। यदि कई तत्व हो तो यह एक कॉलम वेक्टर भी होना चाहिए।

इसके अलावा, इस विधि को 2, 3, 4 वें ... निकटतम पड़ोसियों (दस्तावेज़ीकरण देखें) देने के लिए सामान्यीकृत किया जा सकता है।

यह भी मामले को सामान्यीकृत जब डेटा उच्च आयामी है (d आयाम तो test और bd कॉलम होता है तो)।

संबंधित मुद्दे