2012-01-01 21 views
8

में एक सेल से तत्वों को हटाया जा रहा एक मैट्रिक्स में, कॉलम, जिसमें पहली पंक्ति के तत्व 0 दूर करने के लिए, हम उपयोग कर सकते हैं:मैटलैब

ind2remove = (A(1,:) == 0); 
A(:,ind2remove) = []; 

मुझे लगता है कि A एक सेल है अगर ऐसा कैसे करते हैं ? मैं कॉलम, जिसमें पहली पंक्ति के तत्व 0.

मैंने कोशिश की है निकालना चाहते हैं:

ind2remove = (A{1,:} == 0); 
A{:,ind2remove} = []; 

लेकिन मैं त्रुटि संदेश मिला:

??? Error using ==> eq 
Too many input arguments. 

Error in ==> ind2remove = (A{1,:} == 0); 
+0

एक सेल विभिन्न डेटा प्रकारों को पकड़ सकता है। आपका सेल कैसा दिखता है? क्या इसमें प्रत्येक सेल में एक तत्व (संख्यात्मक) है? जवाब सरल है, लेकिन मुझे एक उदाहरण डेटा चाहिए। – abcd

+0

@yoda: सेल ए की पहली पंक्ति में संख्यात्मक मान होते हैं, और दूसरी पंक्ति में matrices – bzak

उत्तर

10

{ } का उपयोग कर अनुक्रमण आप देता है सामग्री के सामग्री, जबकि () का उपयोग करके इंडेक्सिंग मूल वस्तु के समान प्रकार देता है यानी, यदि A एक सेल है, A{i,j} यह वापस लौटाएगा होल्डिंग, और A(i,j) हमेशा एक सेल वापस कर देगा। आपको बाद वाले की जरूरत है।

तो अपने मामले में, आप सभी कॉलम को खत्म करने के लिए निम्न कार्य कर सकते हैं जहां पहली पंक्ति में 0 है।

A(:, cellfun(@(x)x==0, A(1,:))) = []; 

यह धारणा यह है कि आपकी टिप्पणी के अनुसार पहली पंक्ति में प्रत्येक कक्ष में केवल एक ही संख्यात्मक तत्व होता है।

+0

बहुत बहुत धन्यवाद। – bzak