How to find values greater than a number in a cell of empty cells?
19 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Adam Danz
el 8 de Nov. de 2019
Editada: Adam Danz
el 9 de Nov. de 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}.
10 comentarios
Adam Danz
el 9 de Nov. de 2019
Editada: Adam Danz
el 9 de Nov. de 2019
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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!