How to find values greater than a number in a cell of empty cells?
    14 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 Data Type Identification 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!