Return index of cell in a cell array for which contains a desired element

5 visualizaciones (últimos 30 días)
I have a cell array:
C = {[1,2,4], [3,5], [8,9]}
I would like to have a function, such that:
somefunc(C, 2) % will return 1, indicating that 2 is in the 1st cell of the cell array
somefunc(C, 8) % will return 3, indicating that 8 is in the 3rd cell of the cell array
somefunc(C, 7) % will return 0 or -1 or whatever that is not 1 or 2, or 3
Is there any MATLAB built-in function that could achieve this purpose?
Thanks in advance!
(Assume the elements in the cell array are unique.)

Respuesta aceptada

Voss
Voss el 20 de Feb. de 2022
C = {[1,2,4], [3,5], [8,9]};
find(cellfun(@(x)ismember(2,x),C))
ans = 1
find(cellfun(@(x)ismember(8,x),C))
ans = 3
find(cellfun(@(x)ismember(7,x),C))
ans = 1×0 empty double row vector
  1 comentario
Voss
Voss el 20 de Feb. de 2022
Or, making that command into a function you can call:
C = {[1,2,4], [3,5], [8,9]};
find_cell_containing(C,2)
ans = 1
find_cell_containing(C,8)
ans = 3
find_cell_containing(C,7)
ans = 1×0 empty double row vector
function idx = find_cell_containing(C,in)
idx = find(cellfun(@(x)ismember(in,x),C));
end

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by