2016-03-29 187 views
3

如果我有一個包含少量矩陣的單元陣列。每個矩陣具有不同的行號但列號相同。如何從MATLAB中的單元格陣列中的矩陣中刪除某列?

C{1} = [30x4 double] C{2} = [25x4 double] C{3} = [32x4 double] ...etc

如果我想刪除在每個矩陣的第一和第三列,我該怎麼辦?

所以電池陣列將變爲:

new_C{1} = [30x2 double] new_C{2} = [25x2 double] new_C{3} = [32x2 double]

其中new_C這兩列從第二和單元陣列中的第四列C.

回答

1

我假設你已經嘗試過了使用for循環的明顯解決方案。 另一種方式是使用cellfun,與logical indexing組合:

columns = false(1, 4); 
columns([2, 4]) = true; 
D = cellfun(@(m)m(:,columns), C, 'UniformOutput', 0) 

首先,我們建造了列的索引向量。然後我們使用cellfun將索引應用於單元格數組中的每個元素。我們使用'UniformOutput', 0,因爲我們想要獲得另一個單元陣列(並且索引操作的結果不是標量)。

+0

謝謝!這工作! 是的,我確實嘗試了一個for循環,但我在考慮是否還有其他更有效的方法來解決它。對不起,我應該提到這一點。 –

相關問題