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

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循环的显而易见的解决方案。
另一种方法是将cellfunlogical indexing结合使用:

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


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

09-07 05:30