How to find in cell structures?

I have the following cell structure:
1x30 double
1x23 double
1x23 double
1x23 double
1x23 double
1x23 double
1x23 double
1x25 double
1x35 double
I want to find whether a number is present in one of these and want to know the index of that. So for instance the number 5 is present in double 1, 5 and 7, so the output should be [1 5 7]. Can this be done?

4 Comments

Take a look to cellfun
Unclear, attach your data as .mat file.
Read about ismember, find.
Adam
Adam on 7 Aug 2019
Edited: Adam on 7 Aug 2019
Off the top of my head, something like this may work:
find( cellfun( @(x) any( find( x == 5 ) ), myCell, 'UniformOutput', false ) )
where myCell is your cell array.
At least it may give you ideas to get to the right solution, though I'm sure someone else will quickly come along with a correct or better solution if this is not it!

Sign in to comment.

 Accepted Answer

madhan ravi
madhan ravi on 7 Aug 2019
Edited: madhan ravi on 7 Aug 2019
v=cellfun(@(x) any( x == 5 ), yourcell);
Wanted = find(v) % Adam was almost right , but a minute tweak

3 Comments

Simpler:
find(cellfun(@(x)any(x(:)==5),yourcell))
That any(find(...)) syntax is rather obfuscated, and should be avoided.
Thank you Stephen!
Thank you guys!

Sign in to comment.

More Answers (0)

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Tags

Asked:

on 7 Aug 2019

Commented:

on 7 Aug 2019

Community Treasure Hunt

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

Start Hunting!