如何从MATLAB中的单元格数组中的矩阵中删除某个列?

时间:2016-03-29 03:02:05

标签: arrays matlab matrix cell

如果我有一个包含很少矩阵的单元格数组。每个矩阵都有不同的行号但列号相同。

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 个答案:

答案 0 :(得分:1)

我假设您已使用for循环尝试了明显的解决方案。 另一种方法是使用cellfun,并结合logical indexing

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

首先,我们为列构建索引向量。然后我们使用cellfun将索引应用于单元数组中的每个元素。我们使用'UniformOutput', 0,因为我们想获得另一个单元格数组(并且索引操作的结果不是标量)。