【问题标题】:How to find an element in a complex cell?如何在复杂单元格中查找元素?
【发布时间】:2015-05-04 19:32:54
【问题描述】:

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

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

如何在 A 中找到一个元素? 比如我要检查9是否在A中!!

【问题讨论】:

  • 单元格是否可以包含任何级别的数据,还是只有两个级别?
  • 它可以在任何级别,因为它是随机生成的
  • 那么我可以建议一个递归来解开你的嵌套单元格......
  • @scmg 这也是我想要的方式。根据需要打开电池包装,然后检查是否包含。

标签: matlab


【解决方案1】:

如果您的元胞数组可以有任意数量的嵌套级别,则您只需递归所有这些级别以检查值。这是一个可以做到这一点的函数:

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

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

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 2018-01-21
    • 2013-08-06
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多