如果我有一个包含很少矩阵的单元格数组。每个矩阵都有不同的行号但列号相同。
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中的第二列和第四列。
答案 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
,因为我们想获得另一个单元格数组(并且索引操作的结果不是标量)。