How to find number and position from cell

1 view (last 30 days)
Philip
Philip on 28 Feb 2013
I have a large cell file (1.6*10^6 rows) with only ones and []. I want to find the positions of the ones, preferably converted to ones and zeros. Since it's a large file, I would rather not do it in a loop.
Example:
a = [1 1 [] [] 1]
have ones in position 1,2,5
  1 Comment
Jan
Jan on 28 Feb 2013
Edited: Jan on 28 Feb 2013
A cell requires curly braces, because [1 1 [] [] 1] is the same as [1,1,1].

Sign in to comment.

Answers (1)

Jan
Jan on 28 Feb 2013
Edited: Jan on 28 Feb 2013
a = {1, 1, [], [], 1};
index = find(~cellfun('isempty', a));
Perhaps this is slightly faster:
index = find(cellfun('prodofsize', a));
While this is slower:
index = find(cellfun(@(c) isequal(c, 1), a));

Categories

Find more on Cell Arrays in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!