我有一个复杂的单元格数组,例如:

A = {1 {2; 3};4 {5 6 7;8 9 10}};

如何在中找到元素?
例如,我想检查9是否在A中!!

最佳答案

如果可以为单元格数组设置任意数量的嵌套级别,则只需递归所有嵌套级别即可检查值下面是一个函数:

function isPresent = is_in_cell(cellArray, value)

  f = @(c) ismember(value, c);
  cellIndex = cellfun(@iscell, cellArray);
  isPresent = any(cellfun(f, cellArray(~cellIndex)));

  while ~isPresent
    cellArray = [cellArray{cellIndex}];
    cellIndex = cellfun(@iscell, cellArray);
    isPresent = any(cellfun(f, cellArray(~cellIndex)));
    if ~any(cellIndex)
      break
    end
  end

end

此函数将检查值的非单元格数组项,然后提取作为单元格数组的项以删除一个嵌套层重复此操作,直到不再有属于单元格数组的条目,或者找到该值为止。

09-10 04:17