How can I sort data in cells?

1 view (last 30 days)
Janna Hinchliff
Janna Hinchliff on 22 Feb 2019
Edited: Adam Danz on 24 Feb 2019
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?
  1 Comment
madhan ravi
madhan ravi on 22 Feb 2019
Please illustrate with an example.

Sign in to comment.

Accepted Answer

Adam Danz
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);

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by