我有一个包含尺寸AxB矩阵的1xN维单元阵列,其中A> 1。 0和B> 2.我想提取每个矩阵的第二和第三列,并创建一个包含这些新矩阵的新单元格数组。
我知道我可以这样做:
newcell = cell(size(oldcell));
for i = 1:size(oldcell,2)
newcell{i} = oldcell{i}(:, [2, 3]);
endfor
但是我想知道是否可以通过进一步的矢量化来避免循环?
答案 0 :(得分:1)
我明白了。这可以使用cellfun()完成,选项UniformOutput设置为false(默认值为true)。
newcell = cellfun(@(x) x(:, [2, 3]), oldcell, 'UniformOutput', false);
这与UniformOutput = true不起作用的原因是,cellfun()然后期望输出是标量,在这种情况下它们不是。