У меня есть сложный массив ячеек, например:Как найти элемент в сложной ячейке?
A = {1 {2; 3};4 {5 6 7;8 9 10}};
Как я могу найти элемент в? Например, я хочу проверить, находится ли 9 в A или нет!
У меня есть сложный массив ячеек, например:Как найти элемент в сложной ячейке?
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
Эта функция будет проверять записи, которые не Массивы ячеек для значения, а затем извлечь записи, которые являются клеточные массивы, чтобы удалить один гнездовой слой. Это повторяется, пока не будет больше записей, которые являются массивами ячеек, или значение найдено.
Может ли ячейка содержать данные на любом уровне включения или есть только два уровня? – Ratbert
Это может быть на любом уровне, потому что он генерируется случайным образом – mona
, тогда я могу просто предложить рекурсию, чтобы сначала упаковать вашу вложенную ячейку ... – scmg