How to find values greater than a number in a cell of empty cells?
18 次查看(过去 30 天)
显示 更早的评论
Hello everyone,
I am trying to find the values greater than '0' in a cell array of few empty cells eg. D = {[],[],[3],[],[],[]}?
I have tried multiple options like
- find(D{:}>=0)
- [row,col] = cellfun(@(c) find(c >= 0), D, 'uniform', false)
- for i = 1 : length(Match), idx(i) = find(Match{1,i}>=0);end
- ismember(D,3);
But nothing has worked so far?
All the best,
Thanks
0 个评论
采纳的回答
Adam Danz
2019-11-8
编辑:Adam Danz
2019-11-9
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}.
10 个评论
Adam Danz
2019-11-9
编辑:Adam Danz
2019-11-9
This line sort(cellfun(@(x)x(1),C)) merely extracts the first value within each element of the cell array C. The elements of C can be scalar, vectors (rows or columns), matricies, multi-dim arrays, any numeric format. But when in comes across an empty element it throws an error because there is no first-value to extract.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!