find element in cell

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

回答(2 个)

An alternative to KSSVs solution would be this one liner
b = a(cellfun(@(x) sum(x==3)>0, a));

3 个评论

cellfun also uses loop inside...
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));
Nice, using "any" there is a really neat idea.

请先登录,再进行评论。

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

类别

帮助中心File Exchange 中查找有关 Multidimensional Arrays 的更多信息

标签

提问:

2017-7-12

评论:

2017-7-13

Community Treasure Hunt

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

Start Hunting!

Translated by