/ / एक पंक्ति में तत्वों को फिर से जोड़ना matlab - matlab, cell, element

एक पंक्ति matlab - matlab, सेल, तत्व में तत्वों का पुनर्व्यवस्थित

मतलब में मेरे दो दोस्त हैं।

ए = यहां छवि विवरण दर्ज करें

तथा

ब = यहां छवि विवरण दर्ज करें

मैं समान होने वाले तत्वों को असाइन करना चाहता हूंइसके अनुसार सेल-वैल्यू ए मैट्रिक्स में संबंधित कॉलम नंबर है और वहां तत्वों को स्थानांतरित करता है। मैं बी के तत्वों को ए के साथ मैप करना चाहता हूं ताकि बी तत्व भी उस स्थिति में चले जाएं।

मैं यह चाहता हूँ

ए = यहां छवि विवरण दर्ज करें

और इसीलिए,

ब = यहां छवि विवरण दर्ज करें

क्या इसे करने का कोई तरीका है?! धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

सबसे आसान तरीका है जिसके बारे में मैं सोच सकता हूंपंक्ति / स्तंभ जोड़े जहाँ पंक्तियाँ मैट्रिक्स के पंक्ति स्थानों से मेल खाती हैं और स्तंभ स्थान स्वयं मैट्रिक्स के वास्तविक तत्व हैं। इन पंक्ति / स्तंभ युग्मों में देखे गए मान फिर से केवल मैट्रिक्स मान हैं।

आप बहुत आसानी से ऐसा कर सकते हैं sparse। ऊपर मैट्रिक्स को फिर से बनाना और इसमें स्टोर करना A:

A = [1 2 5 8; 1 2 4 7];

... मैं इसे इस तरह से करूंगा:

r = repmat((1:size(A,1)).", 1, size(A,2)); %"
S = full(sparse(r(:),A(:),A(:)));

कोड की पहली पंक्ति मैट्रिक्स में प्रत्येक मान के लिए पंक्ति स्थान बनाती है A, फिर उपयोग कर रहे हैं sparse पंक्ति / स्तंभ जोड़े और संबंधित मान निर्दिष्ट करने के लिए और हम उपयोग करते हैं full एक उचित संख्यात्मक मैट्रिक्स में परिवर्तित करने के लिए।

हमें मिला:

S =

1     2     0     0     5     0     0     8
1     2     0     4     0     0     7     0

आप मैट्रिक्स के लिए भी ऐसा कर सकते हैं B। आप "उपयोग करें sparse और होने के लिए तीसरा पैरामीटर निर्दिष्ट करें B बजाय:

B = [0.5 0.2 0.6 0.8; 0.4 0.6 0.8 0.9];
S2 = full(sparse(r(:),A(:),B(:)));

हमें मिला:

>> S2

S2 =

0.5000    0.2000         0         0    0.6000         0         0    0.8000
0.4000    0.6000         0    0.8000         0         0    0.9000         0