2012-02-16 19 views
13

अलग अलग तरीकों में एक ही लंबाई की दो वैक्टर के बीच की दूरी की गणना करने के होते हैं: इयूक्लिडियन, मैनहट्टन, हैमिंग ...गणना दूरी

मैं किसी भी विधि के बीच दूरी की गणना के बारे में सोच रहा हूँ विभिन्न लंबाई के वैक्टर।

+0

आपके वैक्टर में क्या शामिल है? (बिट्स, फ्लोट्स, ...)? क्या आप उन्हें 0 से भर नहीं सकते हैं और समान लंबाई वाले वैक्टरों में से एक को लागू कर सकते हैं? – Scharron

+0

@Scharron, मुझे लगता है कि आप एक वेक्टर की लंबाई (मानक) के साथ एक वेक्टर के आयाम को भ्रमित कर रहे हैं। ओपी ने कहीं भी उल्लेख नहीं किया कि एक वेक्टर में घटकों की संख्या किसी अन्य वेक्टर में घटकों की संख्या से अलग होती है। – ardnew

+3

@ardnew आप शुद्ध गणित में सही हैं। लेकिन जिस तरह से प्रश्न व्यक्त किया गया है, मैंने माना कि उसने "कंप्यूटर विज्ञान" लंबाई के बारे में बात की, जिसका मतलब वेक्टर में तत्वों की संख्या है। अन्यथा, उन्हें अलग-अलग वैक्टरों की दूरी की गणना करने में कोई समस्या नहीं होगी। – Scharron

उत्तर

6

यूक्लिडियन दूरी सूत्र यूक्लिडियन अंतरिक्ष में किसी भी दो बिंदुओं के बीच की दूरी पाता है।

यूक्लिडियन अंतरिक्ष में एक बिंदु को यूक्लिडियन वेक्टर भी कहा जाता है।

आप दो अलग-अलग लंबाई के वैक्टरों के बीच की दूरी की गणना करने के लिए यूक्लिडियन दूरी सूत्र का उपयोग कर सकते हैं।

विभिन्न आयाम के वैक्टरों के लिए, वही सिद्धांत लागू होता है।

मान लीजिए कि उच्च आयामी अंतरिक्ष में निचले आयाम का वेक्टर भी मौजूद है। फिर आप सभी लापता घटकों को निचले आयामी वेक्टर में 0 पर सेट कर सकते हैं ताकि दोनों वैक्टरों का एक ही आयाम हो। फिर आप दूरी की गणना के लिए किसी भी निर्दिष्ट दूरी सूत्रों का उपयोग करेंगे।

उदाहरण के लिए, घटकों (a1,a2) साथ में एक 2-आयामी वेक्टर A पर विचार करें, और एक 3 आयामी सदिश घटकों (b1,b2,b3) साथ में B

में व्यक्त करने के लिए, आप इसके घटक (a1,a2,0) पर सेट करेंगे। फिर, इयूक्लिडियन दूरी dA और B के बीच सूत्र का उपयोग कर पाया जा सकता है:

d² = (b1 - a1)² + (b2 - a2)² + (b3 - 0)² 

d = sqrt((b1 - a1)² + (b2 - a2)² + b3²) 

अपने विशेष मामले के लिए, घटकों या तो 0 या 1 हो जाएगा, इसलिए सभी अंतर हो सकता है -1, 0, या 1। वर्ग अंतर केवल 0 या 1 होगा।

आप घटकों का प्रतिनिधित्व करने के पूर्णांक या अलग-अलग बिट्स का उपयोग कर रहे हैं, तो आप कुछ गणित के बजाय सरल बिटवाइज़ संचालन का उपयोग कर सकते (^ मतलब है XOR या exclusive or):

d = sqrt(b1^a1 + b2^a2 + ... + b(n-1)^a(n-1) + b(n)^a(n)) 

और हम पीछे संभालने रहे हैं A के घटकों 0 हैं, इसलिए अंतिम सूत्र होगा:

d = sqrt(b1^a1 + b2^a2 + ... + b(n-1) + b(n)) 
+0

शुरुआत में, यह समझ में आता है। लेकिन अब, कुछ समय के बाद, लापता आयाम के गुम मूल्य को शून्य पर सेट करने के लिए, यदि आप यूक्लिडियन का उपयोग स्थान के लिए फिंगरप्रिंट मिलान की गणना करने के लिए करते हैं, तो समस्याएं पैदा हो सकती हैं। आपके उदाहरण में ...कल्पना करें कि वेक्टर ए में (0,0) है और वेक्टर बी में (0,0,0) है और एक विक्टर सी में (0,0,0) है, यूक्लिडियन के परिणामस्वरूप दोनों दूरी के लिए शून्य की दूरी गणना होगी । लेकिन ए बी के रूप में बी के लिए बहुत दूर है। – JacksOnF1re

+0

@ जैक्सऑनएफ 1 मुझे यकीन नहीं है कि मैं अनुसरण करता हूं। आपके उदाहरण में, ए से बी की दूरी बी से सी की दूरी से अलग क्यों होनी चाहिए? – ardnew

+0

मेरी व्याख्या थोड़ा खराब है। मेरा मतलब है, यदि आप यूक्लिडियन के साथ दूरी की गणना करते हैं, तो ए और बी के बीच की दूरी बी और सी की तरह ही है लेकिन यह समस्या है! लापता आयाम की वजह से ए से बी को उच्च दूरी वापस करनी चाहिए। इससे स्थानीयकरण के लिए गणना की बात आती है, तो समस्याएं (मुझे लगता है) का कारण बन सकता है। गणितीय रूप से सही, लेकिन प्रोग्रामिंग मुद्दों के लिए उपयोगी उपयोगी। मेरी अंग्रेजी के लिए खेद है। – JacksOnF1re

0

आप दो वैक्टर पी के बीच औसत न्यूनतम दूरी की गणना करने के लिए प्रयास कर सकते हैं और n आयामों की क्ष और मीटर (एन ~ = एम):

d = 1/n * sum_i=1:n (min_j=1:m (p(i) - q(j))) + 1/m * sum_j=1:m (min_i=1:n (p(i) - q(j))) 
0

आप सीधे लंबाई भिन्न वैक्टर के बीच दूरी की गणना नहीं कर सकते।

यहां सभी सुझाव एक ऐसे फ़ंक्शन से शुरू होते हैं जो निचले-लंबाई वाले वेक्टर को उच्च-लंबाई वाले मानचित्र पर नक्शा करता है, फिर गणना सामान्य के रूप में करता है।

  • शून्यों के साथ भरें:

    कई, कई कार्यों (असीम कई, वास्तव में) है कि एक का उपयोग कर सकते हैं। यह करना सबसे आसान काम है। कहें, अगर आपके पास कार है और उसे हवाई जहाज से दूरी की गणना करने की आवश्यकता है, तो यह कार को समुद्र के स्तर पर रखता है।

  • कहीं लापता मूल्यों को देखो। कार-हवाई जहाज उदाहरण के साथ, आप अपने भौगोलिक डेटाबेस को फायर करेंगे और अक्षांश/अक्षांश से ऊंचाइयों को देखेंगे।
  • कुछ गणितीय फ़ंक्शन का उपयोग करें।

दूरी गणना के नतीजे दृढ़ता से उस कार्य पर निर्भर करता है जो छोटे वेक्टर को लंबे समय तक परिवर्तित करता है, सभी को इस बात के बारे में स्पष्ट होना चाहिए कि किस कार्य का उपयोग किया जाता है। या तो क्योंकि खेतों में हर कोई इस बात से सहमत है कि केवल एक ही कार्य समझ में आता है, या क्योंकि रूपांतरण में उपयोग किए गए फ़ंक्शन को नोट किया जाता है।

0

ज़ीरो के साथ लघु आकार के सरणी को पैडिंग करने का विचार लंबे आकार के सरणी की तरह समान लंबाई रखने के विचार को "आम तौर पर" एक सही विचार नहीं लगता है।

उदाहरण के लिए, यदि हमारे पास एक ही पैरामीटर के लिए माप के दो सेट (सरणी, वैक्टर, ...) हैं (उदाहरण के लिए तापमान, गति या बाइनरी पैरामीटर को चालू/बंद स्विच की स्थिति के रूप में) अलग-अलग समय पर बनाया गया है instants। मान लें कि पहले सेट ए 1 में इंस्टेंट्स टी 1 के सेट पर बनाए गए एन माप होते हैं जबकि दूसरे सेट ए 2 में एम माप (एम ~ = एन) इंस्टेंट्स टी 2 के एक सेट पर लिया जाता है।

कृपया ध्यान दें कि टी 2 का वितरण मनमाने ढंग से टी 1 से अलग है। इस प्रकार, यहां शून्यों के साथ पैडिंग समझ में नहीं आता है।

इस मामले में, मैं समय instants के एक सामान्य सेट का उपयोग करके प्रक्षेप का उपयोग करने का सुझाव देते हैं, का कहना है कि टी इस प्रकार है:

A1_new = लगाना (टी 1, ए 1, टी);

ए 2_न्यू = इंटरपोलेट (टी 2, ए 2, टी);

जहां इंटरपोलेट (एक्स, वाई, एक्सक्यू) इनपुट को चर एक्स, फंक्शन वाई (एक्स) और क्वेरी पॉइंट्स xq के रूप में स्वीकार करता है। 'इंटरपोलेट' फ़ंक्शन इंटरपोलेटेड आउटपुट वाई (xq) देता है।

अब, हम किसी भी उपयुक्त माप द्वारा समान आकार सेट A1_new और A2_new की तुलना कर सकते हैं उदा। यूक्लिडियन दूरी।

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