2016-03-29 138 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循环,但我在考虑是否还有其他更有效的方法来解决它。对不起,我应该提到这一点。 –

相关问题