indexing cell array of arrays
    7 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
I have a cell array with M arrays of [Nx1] elements in each cell. How do I create a cell array with the same M arrays but with the first K elements of each cell?
0 Kommentare
Akzeptierte Antwort
  Evan
      
 am 9 Aug. 2013
        
      Bearbeitet: Evan
      
 am 9 Aug. 2013
  
      cellfun(@(x)x(1:K),C,'uni',0) %Where C is your original cell array
3 Kommentare
  Evan
      
 am 10 Aug. 2013
				
      Bearbeitet: Evan
      
 am 10 Aug. 2013
  
			Note that, when using implicit functions with cellfun, operation will often be slower than a FOR LOOP would be (this is because cellfun has to do the looping anyway, plus some overhead). So, in cases where you're working with large arrays and/or operation time is quite important, my method above is not ideal.
Weitere Antworten (3)
  Daniel Shub
      
      
 am 9 Aug. 2013
        
      Bearbeitet: Daniel Shub
      
      
 am 23 Aug. 2013
  
      It is not clear why you have a cell array with each element having Nx1 data, but if all the Nx1 arrays are the same type you can use CELL2MAT. Sticking with the one line answers:
mat2cell(subsref(cell2mat(x), struct('type', {'()'}, 'subs', {{1:K, ':'}})), K, ones(M, 1));
where x is your cell array.
If the M Nx1 arrays are different classes, for example from the output of
    data = textscan(fileID,'%s %s %d %f %f');
I would convert my cell array into a structure array with meaningful field names
 tempCellMat = cellfun(@(x)mat2cell(x, ones(length(x), 1), 1), data, 'UniformOutput', false);
 structArray = cell2struct([tempCellMat{:}], {'Name','dateStr','age','weight','height'}, 2);
You can then do structArray(1:k).
2 Kommentare
  Daniel Shub
      
      
 am 23 Aug. 2013
				Ahh, so each of your M arrays of [Nx1] elements is of a potentially different class. This means you cannot use CELL2MAT and my answer will not work.... See my edit.
Siehe auch
Kategorien
				Mehr zu Logical finden Sie in Help Center und File Exchange
			
	Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



