Borrar filtros
Borrar filtros

find element in cell

2 visualizaciones (últimos 30 días)
skysky2000
skysky2000 el 12 de Jul. de 2017
Comentada: dbmn el 13 de Jul. de 2017
Dear all, I've problem with the cell,
a= {[67 8 33] [1 2 3 5] [2 88 5] [3 66 7 90] [3] [66 78 12 1 44 6 77 3]},
how to find each cell have number 3. answer expect it is:
b= {[1 2 3 5] [3 66 7 90] [3] [66 78 12 1 44 6 77 3]}
thanks all

Respuestas (2)

dbmn
dbmn el 12 de Jul. de 2017
An alternative to KSSVs solution would be this one liner
b = a(cellfun(@(x) sum(x==3)>0, a));
  3 comentarios
Jan
Jan el 12 de Jul. de 2017
The result of sum(x==3)>0 is unclear, when the cell element is the empty matrix. What about:
b = a(cellfun(@(x) any(x==3), a));
dbmn
dbmn el 13 de Jul. de 2017
Nice, using "any" there is a really neat idea.

Iniciar sesión para comentar.


KSSV
KSSV el 12 de Jul. de 2017
a= {[67 8 33] [1 2 3 5] [2 88 5] [3 66 7 90] [3] [66 78 12 1 44 6 77 3]} ;
b= {[1 2 3 5] [3 66 7 90] [3] [66 78 12 1 44 6 77 3]} ;
iwant = cell([],1) ;
count = 0 ;
for i = 1:length(a)
if any(a{i}==3)
count = count+1 ;
iwant{count} = a{i} ;
end
end
iwant

Categorías

Más información sobre Matrices and Arrays 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