2011-08-19 24 views
7

संभव डुप्लिकेट:
How can I change the values of multiple points in a matrix?मैटलैब: स्तंभ पंक्ति सूचकांक जोड़े के साथ मैट्रिक्स आवंटित

मैं एक मैट्रिक्स A और एक ही लंबाई, r के तीन वैक्टर, अनुक्रमित पकड़े c को असाइन करने के लिए पंक्तियों का असाइन करने के लिए, और v असाइन करने के लिए निर्दिष्ट मानों को रखने के लिए पंक्तियों की अनुक्रमणिका।

मैं A(r(i),c(i))==v(i) सभी i के लिए प्राप्त करना चाहता हूं। लेकिन कर

A(r,c)=v; 

सही परिणाम नहीं करता है के रूप में matlab r और c के हर संभव संयोजन के चयन और इसे करने के लिए मान निर्दिष्ट उदाहरण

n=5; 
A=zeros(n); 
r=1:n; 
c=1:n; 

A(r,c)=1; 

के लिए, के रूप में यह व्याख्या लोगों के एक मैट्रिक्स पैदावार, जहां मैं पहचान मैट्रिक्स प्राप्त करना चाहता हूं क्योंकि मैं A(r(i),c(i))==1 प्रत्येक i के लिए चाहता हूं, यह केवल विकर्ण पर तत्वों को प्रभावित किया जाना चाहिए।

for लूप के बिना, वांछित परिणाम कैसे प्राप्त कर सकता हूं?

+0

समान प्रश्न: [एक वेक्टर के लिए एक matlab मैट्रिक्स परिवर्तित ] (http://stackoverflow.com/questions/1931545/converting-a-matlab-matrix-to-a-vector) – Amro

+1

@Amro - जबकि मैं सहमत हूं कि दोनों प्रश्नों के उत्तर बहुत समान हैं, प्रश्न अलग हैं - I जानना चाहता था कि मैट्रिक्स को कैसे असाइन करना है, जबकि दूसरा सवाल यह जानना चाहता है कि मैट्रिक्स को वेक्टर में कैसे घुमाया जाए। मेरे प्रश्न का उत्तर तलाशते समय कोई अन्य प्रश्न तक नहीं पहुंच पाएगा। – olamundo

+1

मैंने आपको नीचे वोट नहीं दिया, मैं बस दूसरे प्रश्न से जुड़ा हुआ था (जैसा कि वोटिंग के विपरीत डुप्लिकेट के रूप में बंद करने के विपरीत) .. – Amro

उत्तर

13

ठीक है, मैं इस सवाल का जवाब मिल गया है - एक रेखीय अनुक्रमण का उपयोग करने की जरूरत है, वह यह है कि एक भी सूचकांक में स्तंभ \ पंक्ति जोड़े कन्वर्ट:

idx = sub2ind(size(A), r,c); 
A(idx)=v; 
संबंधित मुद्दे