Thursday, 15 January 2015

loops - Matlab: select submatrix from matrix by certain criteria -


मेरे पास एक मैट्रिक्स ए

  ए = [फ़ जादू (10)] ए = 931142103 92 99 1 8 15 67 74 51 58 40 931142103 98 80 7 14 16 73 55 57 64 41 931142103 4 81 88 20 22 54 56 63 70 47 459200101 85 87 1 9 21 3 60 62 69 71 28 459200101 86 93 25 2 9 61 68 75 52 34 459200101 17 24 76 83 90 42 49 26 33 65 459200101 23 5 82 89 91 48 30 32 39 66 37833100 79 6 13 95 97 29 31 38 45 72 37833100 10 12 94 96 78 35 37 44 46 53 37833100 11 18 100 77 84 36 43 50 27 59 पहला कॉलम फर्म कोड शेष कॉलम फर्मों के डेटा हैं, प्रत्येक पंक्ति में किसी दिए गए वर्ष में कॉलम 1 में फर्म का जिक्र है। सूचना है कि हर कंपनी के लिए साल शेष नहीं हो सकते हैं मैं पहले कॉलम के अनुसार उप-मेट्रिकस घटाना चाहूंगा उदाहरण के लिए,  ए (1: 3,2: 11)  के लिए 931142103: 

  ए (1: 3,2: 11) ans = 92 99 1 8 15 67 74 51 58 40 98 80 7 14 16 73 55 57 64 41 4 81 88 20 22 54 56 63 70 47  

उसी के रूप में 459200101 (जो ए (4: 7,2: 11) ) और A (8: 10,2: 11) के लिए 37833100 हो।

मुझे समझ में आ रहा है कि कोड को ऐसा करना चाहिए:

  सूचकांक = खोज (ए (,, 1)); ओ बीएस = आकार (ए (:, 1)); मैं = 1 के लिए: obs, अगर मैं == इंडेक्स (आई ??) ए {i} = ए (??, 2:11); अंत में  

इन जटिल कोडों को सूचीबद्ध करने में मुझे कठिनाइयां हैं: 459200101 और 37833100 उन्हें एक साथ इकट्ठा करने के लिए और मैं अपने submatrix A {i} की पंक्तियों को कैसे लिख सकता हूं?

बहुत बहुत धन्यवाद!

के साथ एक दृष्टिकोण -

 % // अद्वितीय प्रविष्टियां प्राप्त करें ए के पहले कॉलम और 'स्थिर' विकल्प के साथ क्रम% // रखने के लिए, जैसे कि unqA1 = अद्वितीय (A (,, 1), 'स्थिर')% // प्रत्येक ऐसे submatrix का चयन करने के लिए arrayfun का उपयोग करें और एक के रूप में स्टोर करें एक सेल सरणी में सेल%, जो कि अंतिम आउटपुट आउटए = सरफेन (@ (एन) ए (ए (ए, (1) == अनैक ए 1 (एन), :), 1: संख्या (अनैक ए 1), 'यूनी' , 0)  

या यह -

  [~, ~, row_idx] = अद्वितीय (ए (,, 1), 'स्थिर') outA = सरणीफन (@ (एन) ए (पंक्ति_idx == n, :), 1: मैक्स (पंक्ति_आईडक्स), 'यूनी', 0)  

अंत में, आप कॉल के साथ परिणाम सत्यापित कर सकते हैं celldisp (outA)


No comments:

Post a Comment