How can I sort data in cells?
    5 views (last 30 days)
  
       Show older comments
    
I have some sets of data saved in a cell array, where each element in the cell array is another cell array containing 3 elements, i.e.
data = 1x6 cell array
    {1 x 3 cell}    {1 x 3 cell}    {1 x 3 cell}    {1 x 3 cell}    {1 x 3 cell}    {1 x 3 cell}
The 1x3 cells all contain 2 single numbers and one mxn data set. I want to sort the data by the second number in the data set - 
    dataovenparamcell{j}{2}
such that cells with the same value of the second number are grouped together. How could I do this?
Accepted Answer
  Adam Danz
    
      
 on 22 Feb 2019
        
      Edited: Adam Danz
    
      
 on 24 Feb 2019
  
      This solution can be reduced two lines but I added a third so it's easier to understand.  Fake data are created at the top. 
% Create fake data
data = { 
    {6 5 rand(3,4)}, {0 2 rand(3,4)}, {1 1 rand(3,4)}, ...
    {9 4 rand(3,4)}, {3 3 rand(3,4)}, {1 6 rand(3,4)}
    };
% Pull out the 2nd numbers and put them into a vector
secondNumber = cell2mat(cellfun(@(x)x(2),data)); 
% determine the sorted index of the vector
[~, sortIdx] = sort(secondNumber); 
%Resort the data
dataSorted = data(sortIdx); 
0 Comments
More Answers (0)
See Also
Categories
				Find more on Shifting and Sorting Matrices in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

