find element in cell

2 vues (au cours des 30 derniers jours)
skysky2000
skysky2000 le 12 Juil 2017
Commenté : dbmn le 13 Juil 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

Réponses (2)

dbmn
dbmn le 12 Juil 2017
An alternative to KSSVs solution would be this one liner
b = a(cellfun(@(x) sum(x==3)>0, a));
  3 commentaires
Jan
Jan le 12 Juil 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 le 13 Juil 2017
Nice, using "any" there is a really neat idea.

Connectez-vous pour commenter.


KSSV
KSSV le 12 Juil 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

Catégories

En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by