2011-11-17 7 views
6

मैं अच्छा एक पूर्व सॉर्ट किया गया 1 दिन वेक्टर के साथ ढेर अतिप्रवाह पर achieve intersect() faster के लिए एक रास्ता खोजने किस्मत थी, इसलिए मैं अद्वितीय() के लिए एक ही भाग्य के लिए उम्मीद कर रहा हूँ;)मैटलैब में अद्वितीय() प्राप्त करने का तेज़ तरीका यदि 1 डी प्री-सॉर्टेड वेक्टर माना जाता है?

लगभग मेरी क्रम के 1/4'th है अद्वितीय() का उपयोग करके खर्च किया। मैं इसे तेज करना चाहता हूं, और मैं इसे 1 डी प्री-सॉर्ट वेक्टर होने के लिए मान सकता हूं। क्या कोई अन्य निम्न स्तरीय फ़ंक्शन है जिसका उपयोग मैं इसे गति देने के लिए सीधे कर सकता हूं?

+0

क्या आप अपने अंतरंग प्रश्न में एक सूचक जोड़ सकते हैं? – John

+1

निश्चित बात, किया गया! – gnychis

उत्तर

7

आप लगातार यह देखने के लिए diff का उपयोग कर सकते हैं कि लगातार तत्व समान हैं।

vector = [1 2 3 4 4 5]; 

uniqueVector = vector([true;diff(vector(:))>0]) 

uniqueVector = 
    1  2  3  4  5 
+0

धन्यवाद, यह बहुत अच्छा है! – lllllll

+0

धन्यवाद! मैंने सॉर्ट + diff का उपयोग करके थोड़ा सा परीक्षण किया, यह matlab में मूल "अद्वितीय" फ़ंक्शन से थोड़ा तेज है। –

+0

सेल सरणी के लिए कुछ समान कैसे है? कहें, वेक्टर = {'ए 1', 'ए 1', 'बी 2'}; – user702846