2012-04-24 13 views
27

ऐसा करने का एक सरल matlab तरीका होना चाहिए। मेरे पास एक पंक्ति वेक्टर है और मैं यह जांचना चाहता हूं कि सभी तत्व बराबर हैं या नहीं। ब्रूट एक पाश में इस के लिए मजबूर आसान है, लेकिन एक अधिक कुशल दृष्टिकोण की तलाश :) तत्वों पूर्णांकोंमैटलैब में, सरणी के सभी तत्व समान हैं या नहीं, यह कैसे जांचें?

+0

मैट्रिक्स कितना बड़ा है? – Vairis

उत्तर

42

हैं मुझे लगता है कि के रूप में

if all(v == v(1)) 

के रूप में आसान हो सकता है एक और तरीका होगा

if range(v) == 0 
+2

'असमान (ए, बी)' के साथ क्या गलत है? –

+6

@reve_etrange - क्योंकि आप सवाल को गलत समझते हैं। यह देखने के लिए असमान परीक्षण है कि दो एरे समान हैं या नहीं। पूछे गए प्रश्न को फिर से पढ़ें। यह पूछता है कि एक सिंगल सरणी के सभी तत्व एक दूसरे के बराबर हैं। –

+2

ठीक है आप ... –

5

एक अन्य समाधान:

numel(unique(v))==1 
+3

'अद्वितीय' काफी धीमा है। –

+0

@BenVoigt, आप सही हैं, आखिरकार - यह सॉर्ट का उपयोग करता है। –

+1

+1: यह उत्तर एक खाली v। – Alex

2

एक अन्य समाधान:

sum(abs(diff(v))) == 0 
2

कैसे: max(v) == min(v)? :-)

+0

यह काम करेगा, लेकिन मुझे उम्मीद है कि यह स्वीकार किए गए समाधान से धीमा है। – m7913d

+1

@ m7913d मैंने इसे चेक किया। यह उत्तर शीर्ष के रूप में तेज़ है। – Trilarion

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