我有一个看起来像这样的单元格数组:
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)
时,我会得到结果,但作为单元格内的单元格并非我的要求。
答案 0 :(得分:2)
您无法直接指定2:3
的{{1}}列,因为abc
的输出与预期维度不匹配。它是cellfun
而3 x 1
是abc(:,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