访问嵌套的单元格数组

时间:2017-09-08 08:27:12

标签: matlab nested cell-array

我有一个大小为1x84的单元格数组,其中元素是1x1或1x2单元格。

我喜欢通过从嵌套单元格中获取第一个元素来获取大小为1x84的单元格数组

CellList = <1x84 cell>

CellList  = <1x1 cell>  <1x1 cell>  <1x1 cell>  <1x2 cell>  <1x1 cell> ... <1x2 cell>       

子元素也是单元格

我尝试使用此代码:

CellList = cellfun(@(x)x{1,:}{1,:},CellList, 'UniformOutput',0);

但是我遇到了以下错误:

error : Cell contents reference from a non-cell array object.

1 个答案:

答案 0 :(得分:2)

cellfun访问您为其提供的单元格的每个元素,因此您正在使用元素x,尝试访问其第一个元素,以及不存在的元素的第一个元素。

您想要使用

CellList2 = cellfun(@(x)x{1}, CellList, 'uniformoutput', false)

编辑:

您声称自己仍然收到错误,在这种情况下,您的问题无法重现。以下是一些设置代码:

% define a 1x84 cell array
c = cell(1,84);
% Make each element a 1x2 or 1x1 cell array 
for n = 1:84; c{n} = cell(1,randi([1,2],1)); end;
% Output is as you've described and shown
>> c = <1x84 cell>
     = <1x2 cell> <1x1 cell> <1x1 cell> ... <1x2 cell>

现在使用我上面的代码,它工作正常。

d = cellfun(@(x)x{1},c,'uniformoutput',false);
d = <1x84 cell>
  = [] [] [] [] ... []   % All empty elements as we initialised empty cells