如果我有一个包含很少矩阵的单元格数组。每个矩阵具有不同的行号但具有相同的列号。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中的第二和第四列。
最佳答案
我假设您已经尝试过使用for
循环的显而易见的解决方案。
另一种方法是将cellfun
与logical indexing结合使用:
columns = false(1, 4);
columns([2, 4]) = true;
D = cellfun(@(m)m(:,columns), C, 'UniformOutput', 0)
首先,我们为列建立索引向量。然后,我们使用
cellfun
将索引应用于单元格数组中的每个元素。我们使用'UniformOutput', 0
,因为我们想要获得另一个单元格数组(并且索引操作的结果不是标量的)。