Best way to sort a 3-d matrix by one column?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi, I'd like to sort a 3 d matrix by the values in one column. I have a 204 x 33 x 9 matrix, and I'd like to sort the rows by the 33rd column of the second dimension. Thanks, Emily
2 Kommentare
Antworten (2)
gonzalo Mier
am 11 Okt. 2018
I am not sure if this is what you want:
matrix(:,33,2) = sort(matrix(:,33,2));
3 Kommentare
Guillaume
am 15 Okt. 2018
You can't use sortrows on a 3D matrix. You have two options:
- Use a loop and use sortrows on the pages:
for page = 1:size(yourmatrix, 3)
yourmatrix(:, :, page) = sortrows(yourmatrix(:, :, page), 33);
end
- Use sort and some sub2ind magic to sort everything at once. I'm not sure it'll be faster than the loop:
[~, roworder] = sort(yourmatrix(:, 33, :));
sortedmatrix = yourmatrix(sub2ind(size(yourmatrix), ...
repmat(roworder, 1, size(yourmatrix, 2), 1), ...
repmat(1:size(yourmatrix, 2), size(yourmatrix, 1), 1, size(yourmatrix, 3)), ...
repmat(permute(1:size(yourmatrix, 3), [1 3 2]), size(yourmatrix, 1), size(yourmatrix, 2), 1)));
0 Kommentare
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!