2011-01-21 17 views
5

ऐसा लगता है कि यह आसान होना चाहिए, लेकिन मैं कोई विशेषज्ञ नहीं हूं और Google मदद नहीं कर रहा है।Matlab: मानक आधार वैक्टर प्राप्त करने का आसान तरीका?

मुझे एन-आयामी अंतरिक्ष के लिए मानक आदेशित आधार वैक्टर बनाने के मैटलैब में एक शानदार तरीका चाहिए। उदाहरण के लिए, व्यवहार निम्न के समान के लिए:

>> [e1, e2] = SOB(2); 
>> e1 

    e1 = 1  0 

>> e2 

    e2 = 0  1 

मैं एक 1-लाइनर के लिए उम्मीद कर रहा हूँ और नहीं है वास्तव में बहुत आसान है कुछ के लिए एक समारोह लिखना चाहते हैं।

धन्यवाद

उत्तर

17

नहीं क्यों

A = eye(N); 

तो A(:,i) अपने आई-वें आधार वेक्टर

4

क्या दो पंक्तियां ठीक होंगी? EYE के साथ पहचान मैट्रिक्स बनाएं, MAT2CELL का उपयोग कर सेल एरे में वेक्टर कॉपी करें, फिर उन्हें DEAL के साथ वितरित करें।

tmp = mat2cell(eye(N),N,ones(N,1)); 
[e1,e2,...,eN] = deal(tmp{:}) 
+0

2 लाइनों काम कर सकता था ... हालांकि (मेरे लिए) है कि बल्कि गुप्त :) – des4maisons

+0

है @ des4maisons: मैं स्पष्ट करने के लिए एक सा संपादित किया है। असल में, यदि आप आधार वैक्टर को सरणी में जोड़ते हैं, तो आपको पहचान मिलती है। इसलिए मैं पहचान मैट्रिक्स का निर्माण करता हूं और इसे अलग करता हूं। – Jonas

+0

याहू, मुझे लगा कि यह करने का तरीका था, मुझे नहीं पता था कि, धन्यवाद। साथ ही, क्या आप mat2cell से लिंक करना चाहते हैं, या num2cell का उपयोग करना चाहते हैं? – des4maisons

0

अगर आप गुमनाम समारोह, इसे और अधिक सुविधाजनक है।

e = @(x) eye(size(A))(:,x); 

यदि ए का आकार 6 से 6 है, तो यह 6 से 1 वेक्टर लौटाता है।

e(1) = [1;0;0;0;0;0] 
+0

'' त्रुटि:() -इंडेक्सिंग इंडेक्स अभिव्यक्ति में आखिरी बार दिखाई देनी चाहिए। ' – User1291

+0

@ उपयोगकर्ता 12 9 1 क्या आपने मैट्रिक्स' ए' परिभाषित किया था? – MiaeKim

+0

कोई फर्क नहीं पड़ता। अगर मैं आकार को हार्डकोड करता हूं तो मुझे पहले से ही यह त्रुटि मिलती है (उदा। '' आंख (5) (:, 3) '') – User1291

1

एक एकल आधार वेक्टर प्राप्त करने के लिए कहते हैं कि k वें N आयामों में मानक आधार वेक्टर, तो आप उपयोग कर सकते हैं:

yourbasisvector = double(1:N == k) 

1:N वेक्टर 1 2 ... N, जो == k तत्व के लिहाज से पैदा करता है k के साथ समानता के लिए परीक्षण; double तार्किक मानों को संख्याओं में परिवर्तित करता है।