How can I sort data in cells?

3 views (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?

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)

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!