How can I sort data in cells?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Janna Hinchliff
am 22 Feb. 2019
Bearbeitet: Adam Danz
am 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 Kommentar
Akzeptierte Antwort
Adam Danz
am 22 Feb. 2019
Bearbeitet: Adam Danz
am 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!