【问题标题】:Vectorization of cell-array element manipulation单元阵列元素操作的矢量化
【发布时间】:2013-03-15 09:41:08
【问题描述】:

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

我知道我能做到:

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

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

【问题讨论】:

    标签: octave vectorization cell-array


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      相关资源
      最近更新 更多