1

我有一个 1xN 维元胞数组,其中包含 AxB 维矩阵,其中 A > 0 和 B > 2。我想提取每个矩阵的第二列和第三列,并创建一个包含这些新矩阵的新元胞数组。

我知道我可以这样做:

newcell = cell(size(oldcell));
for i = 1:size(oldcell,2)
    newcell{i} = oldcell{i}(:, [2, 3]);
endfor

但我想知道是否可以通过进一步矢量化来避免循环?

4

1 回答 1

1

我想到了。这可以通过 cellfun() 来完成,将 UniformOutput 选项设置为 false(默认为 true)。

newcell = cellfun(@(x) x(:, [2, 3]), oldcell, 'UniformOutput', false);

这不适用于 UniformOutput=true 的原因是 cellfun() 然后期望输出是标量的,在这种情况下它们不是。

于 2013-03-15T10:20:35.787 回答