Как отсортировать строки многомерной матрицы в Matlab без изменения порядка элементов в первом столбце?
У меня есть трехмерная матрица A (i, j, k). Проблема заключается в следующем:
У меня есть несколько комнат. Я использую первое измерение (i) для обозначения идентификаторов комнат. В каждой комнате есть несколько стульев. Я использую 2-е измерение (j) для обозначения идентификаторов стульев. Каждый стул имеет координаты x, y, z. я использую 3-е измерение (k) для обозначения координат.
Например, A(4,3,1) обозначает 4-ю комнату, 3-й стул, координату x; A (4,3,2) обозначает ту же комнату и стул, но y-координата; а(4,3,3) Z-координата.
Мне нужно рассортировать стулья в каждой комнате независимо от других комнат, в соответствии с одним из измерений.
Предположим, я хочу отсортировать стулья только первой комнаты, то есть A(1,:,:), по их координате x, то есть A(1,:, 1).
Может ли кто-нибудь помочь мне, как это сделать в Matlab 2016b?
Большое спасибо!
1 ответ:
Я думаю, что это делает то, что вы хотите:
A = randi(99,3,3,3); % example data room = 1; % desired room coord = 1; % desired coordinate [~, ind] = sort(A(room,:,coord)); % get indices of the sorting B = A; % result. Initiallize B(room,:,:) = B(room,ind,:); % apply sorting to chairs in that room
Comments