2011-11-19 12 views
7

मेरे पास एक मैट्रिक्स है (इसे X पर कॉल करें) जिसे zero(3) कहने के लिए प्रारंभ किया गया है।MATLAB में सेल-सरणी कैसे बनाएं और सभी तत्वों को उसी ऑब्जेक्ट में प्रारंभ करें?

मैं कोड को बदलना चाहता हूं ताकि X आकार का एक सेल सरणी (कहें) (3,1) और प्रत्येक तत्व को zero(3) पर प्रारंभ करें।

मैं इसे एक लूप के साथ कर सकता हूं लेकिन क्या कोई बेहतर तरीका है?

X = cell(3,1); 
for ii=1:numel(X) 
    X{ii} = zeros(3); 
end 

उत्तर

9

आप इसे deal() के साथ कर सकते हैं।

>> [X{1:3, 1}] = deal(zeros(3)) 

X = 

    [3x3 double] 
    [3x3 double] 
    [3x3 double] 
+0

ध्यान दें कि यह सुरक्षित नहीं है, तो 'X' पहले से मौजूद है। उदाहरण के लिए यदि इसे '[एक्स {1: 4, 1}] = सौदा (शून्य (4))' –

7

एक वैकल्पिक तरीका:

X = repmat({zeros(3)}, 3, 1); 

एक और एक:

X = cell(3,1); 
X(:) = {zeros(3)}; 
+0

से पहले इस तरह परिभाषित किया गया था तो विकल्पों का लाभ यह है कि एक्स का आकार नई सामग्री के समान रेखा पर निर्धारित होता है । मैं उन्हें सौदा करना पसंद करूंगा। सौदा शायद किसी अन्य कनेक्शन में सबसे अच्छा इस्तेमाल किया जाता है। – Trilarion

3

और फिर भी एक और तरीका:

X = {zeros(3)}; 
X(1:3,1) = X; 

यह समाधान तथ्य यह है कि आप के लिए प्रदान कर सकते हैं का उपयोग करता है सूचकांक जो चर आकार से परे झूठ बोलते हैं। Matlab स्वचालित रूप से इस मामले में विस्तार होगा।

इसी

:

clear X; 
X(1:3,1) = {zeros(3)}; 
संबंधित मुद्दे