如何在MATLAB中将一个单元格元素分成两个单独的单元格元素

时间:2016-05-18 14:25:51

标签: matlab cell-array

我有一个看起来像这样的单元格数组:

abc = {[1,0,1,0];[1,1,0,1];[1,1,1,0]};

我想将每个单元格元素分成两组,如下所示:

abc(:,2) = {[1,0];[1,1];[1,1]};
abc(:,3) = {[1,0];[0,1];[1,0]};

我尝试使用此语句来执行此操作:

abc(:,2:3) = cellfun(@(x) mat2cell(x,[1],[2,2]),abc(:,1),'uni',0);

但是这句话给出了以下错误:

  

分配比非单例下标更少的非单例rhs维度

当我尝试将其分配到abc(:,2)而不是abc(:,2:3)时,我会得到结果,但作为单元格内的单元格并非我的要求。

1 个答案:

答案 0 :(得分:2)

您无法直接指定2:3的{​​{1}}列,因为abc的输出与预期维度不匹配。它是cellfun3 x 1abc(:,2;3)。您可以使用3 x 2调用来使其正常工作。

cat

不使用abc = {[1,0,1,0];[1,1,0,1];[1,1,1,0]}; tmp = cellfun(@(x) mat2cell(x,[1],[2,2]),abc(:,1),'uni',0); abc(:,2:3) = cat(1, tmp{:}); %// [1x4 double] [1x2 double] [1x2 double] %// [1x4 double] [1x2 double] [1x2 double] %// [1x4 double] [1x2 double] [1x2 double] 的替代方案可能是。

cellfun