मैटलैब में काम करने में सहायता करने के लिए मेरी अलग-अलग लंबाई के साथ एक्स समन्वय के 2 वैक्टर हैं। उदाहरण के लिए:मैपिंग 2 वैक्टर -
xm = [15 20 24 25 26 35 81 84 93];
xn = [14 22 26 51 55 59 70 75 89 96];
मैं दूसरे शब्दों में xn को xm, या मैप करने के लिए जो xn में निर्देशांक खोजने की जरूरत है xm के सबसे करीब हैं। इसलिए यदि मेरे पास उन निर्देशांक से जुड़े मूल्य हैं, तो मैं इस मानचित्र का उपयोग इंडेक्स के रूप में कर सकता हूं और उन मानों से संबंधित हूं।
दोनों वैक्टर क्रमबद्ध किए गए हैं और प्रत्येक वेक्टर में कोई डुप्लिकेट नहीं है।
मैं के साथ एक सरल समारोह लिखा था के लिए लूप:
function xmap = vectors_map(xm,xn)
xmap = zeros(size(xm));
for k=1:numel(xm)
[~, ind] = min(abs(xm(k)-xn));
xmap(k) = ind(1);
end
ऊपर उदाहरण के लिए रिटर्न
xmap =
1 2 2 3 3 3 8 9 10
ठीक काम करता है, लेकिन लंबे समय वैक्टर के साथ कुछ समय लगता है है (100,000 से अधिक अंक) ।
कोई भी विचार इस कोड को सदिश कैसे करें?
मैं एक अप्रयुक्त चर को छोड़ने के लिए मैटलैब के नवीनतम संस्करण में नया ~ वाक्यविन्यास का उपयोग कर रहा हूं। यदि आपके पास पहले का संस्करण है, तो बस ~ tmp के साथ प्रतिस्थापित करें। – yuk
बस स्पष्ट करने के लिए, आप प्रत्येक एक्सएम [i] इंडेक्स जे के लिए चाहते हैं कि xm [i] xn [j] के निकटतम है? –
हां। अच्छा सारांश, धन्यवाद। – yuk