2012-01-01 23 views
8

在矩陣,以去除列中的第一行的元素是0,我們可以使用:刪除從電池元件在Matlab

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 2012-01-01 18:21:20

+0

@yoda:單元格A的第一行包含數字值,第二行包含矩陣 – bzak 2012-01-01 18:26:22

回答

10

索引使用{ }給你該單元的內容,而使用()的索引返回與原始對象相同的類型,即,如果A是單元格,則A{i,j}將返回其是持有,並且A(i,j)將始終返回一個單元格。你需要後者。

因此,對於您的情況,您可以執行以下操作以消除第一行有0的所有列。

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

這裏的假設是,第一行中的每個單元格只包含一個數字元素,就像您的評論一樣。

+0

非常感謝。 – bzak 2012-01-01 18:34:55