# How to find values greater than a number in a cell of empty cells?

41 views (last 30 days)
BR on 8 Nov 2019
Edited: BR on 11 Nov 2019
Hello everyone,
I am trying to find the values greater than '0' in a cell array of few empty cells eg. D = {[],[],,[],[],[]}?
I have tried multiple options like
1. find(D{:}>=0)
2. [row,col] = cellfun(@(c) find(c >= 0), D, 'uniform', false)
3. for i = 1 : length(Match), idx(i) = find(Match{1,i}>=0);end
4. ismember(D,3);
But nothing has worked so far?
All the best,
Thanks

Adam Danz on 8 Nov 2019
Edited: Adam Danz on 9 Nov 2019
D = {[],[],3,[], -2, 0, [], 1, 6, []};
idx = cellfun(@(x)~isempty(x) && x >= 0, D); % logical index
If you need the subscript index,
idx = find(cellfun(@(x)~isempty(x) && x >= 0, D)); % subscript index
If D contains non-scalars,
D = {[],[],3,[], -2, 0, [], 1, 6, [], -2:2, magic(4)-8};
idx = cellfun(@(x)~isempty(x) & x >= 0, D, 'UniformOutput', false);
but now idx is a cell-array so to find the values >= 0 in element n of D, idx{n}.
BR on 11 Nov 2019
Edited: BR on 11 Nov 2019
Ok, thanks man. Appreciate it and sorry for the late response.