Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何在复杂单元中查找元素?_Matlab - Fatal编程技术网

Matlab 如何在复杂单元中查找元素?

Matlab 如何在复杂单元中查找元素?,matlab,Matlab,我有一个复杂的单元阵列,例如: 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, cel

我有一个复杂的单元阵列,例如:

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

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

单元格是否可以包含任何级别的数据,或者是否只有两个级别的数据?可以是任何级别的数据,因为它是随机生成的,所以我可以建议一个递归,首先取消嵌套单元格的打包…@scmg我也会这样做。根据需要打开电池包装,然后检查是否包含。