मैं data = [1 1.2 1.3 1.5 1.8]
मैं किसी दिए गए मान के करीब मूल्य कैसे प्राप्त करूं?
मैंने पहले और इस बात के लिए डेटा से के बाद निकटतम मान खोजना चाहते हैं, b = 1.23
मैं ऐसा कैसे किया जाए है?
मैं data = [1 1.2 1.3 1.5 1.8]
मैं किसी दिए गए मान के करीब मूल्य कैसे प्राप्त करूं?
मैंने पहले और इस बात के लिए डेटा से के बाद निकटतम मान खोजना चाहते हैं, b = 1.23
मैं ऐसा कैसे किया जाए है?
कैसे 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)
अगर डेटा सॉर्ट हो जाता है आप पाते हैं का उपयोग कर सकते हैं। वेक्टर data
को सॉर्ट नहीं किया जाना चाहिए और b
सकारात्मक या नकारात्मक हो सकता है।
ind=knnsearch(data',b) c=data(ind)
जो सूचकांक रिटर्न (या सूचकांक के सरणी):
[~,I] = min(abs(data-b));
c = data(I);
यहाँ एक और तरीका है:
data = [1 1.2 1.3 1.5 1.8]
b = 1.23
find(abs(data-b)==min(abs(data-b)))
यह इस पोस्ट में उत्तर के रूप में पहले से ही जो कुछ भी रखा गया है उससे ज्यादा कुछ नहीं जोड़ता है। – rayryeng
इस विधि मामले में जहां b
में कई तत्वों है कि आप खोज रहे हैं देखते हैं करने के लिए संदेह के जवाब सामान्यीकरण करता , में निकटतम तत्व (या तत्व) में b
में सूचीबद्ध तत्वों के लिए।
ध्यान दें कि डेटा ट्रांसफर किया गया है क्योंकि सेट को खोजने के लिए कॉलम वेक्टर होने की आवश्यकता है। यदि कई तत्व हो तो यह एक कॉलम वेक्टर भी होना चाहिए।
इसके अलावा, इस विधि को 2, 3, 4 वें ... निकटतम पड़ोसियों (दस्तावेज़ीकरण देखें) देने के लिए सामान्यीकृत किया जा सकता है।
यह भी मामले को सामान्यीकृत जब डेटा उच्च आयामी है (d
आयाम तो test
और b
d
कॉलम होता है तो)।
abs को मत भूलना ... – madth3