2011-01-21 18 views
5

में नक्शे मैं Matlab में एक तेजीएक-से-एक मानचित्रण पूर्णांकों का दोनों के बीच बड़ा सरणियों का निर्माण करने की जरूरत है। मानचित्रण इनपुट के रूप में एक पूर्व निर्धारित सरणी से एक तत्व लेना चाहिए, जैसे:फास्ट साहचर्य सरणियों या मैटलैब

in_range = [-200 2 56 45 ... ]; 

और पिछले सरणी में यह नक्शा, अपने सूचकांक से, एक और पूर्व निर्धारित सरणी से इसी तत्व, जैसे करने के लिए:

out_range = [-10000 0 97 600 ... ]; 

उदाहरण के लिए, उपरोक्त मामले में, my_map(-200) चाहिए उत्पादन -10000, और my_map(45) चाहिए उत्पादन 600

मैं एक समाधान है कि

  1. बहुत बड़ी सरणियों (~ 100K तत्वों) अपेक्षाकृत कुशलता से मैप कर सकते हैं की जरूरत है।
  2. अच्छी तरह से in_range और out_range की सीमा (उनके min और max मूल्यों यानी) के साथ तराजू

अब तक, मैं इस समस्या जावा के HashMaps साथ जावा के लिए Matlab के बाहरी इंटरफ़ेस का उपयोग कर हल कर लिया है, लेकिन मैं सोच रहा था अगर मैटलैब-मूल विकल्प था।

धन्यवाद!

+0

[मैटलैब में हैश टेबल] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3591942/hash-tables-in-matlab) – Jonas

+1

डुप्लिकेट (मेरे अलावा) के जवाब आपको बताते हैं कि आपको बस इतना करना है जानना। – Jonas

उत्तर

4

मैटलैब के नवीनतम संस्करणों में hashes है। मैं 2007 बी का उपयोग कर रहा हूं और वे उपलब्ध नहीं हैं, इसलिए जब भी मुझे हैश की आवश्यकता होती है तो मैं structs का उपयोग करता हूं। बस पूर्णांक नामों को genvarname के साथ पूर्ण फ़ील्ड नामों में कनवर्ट करें।