Как отсортировать строки многомерной матрицы в 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?

Большое спасибо!

128   1  

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
    Ничего не найдено.

Добавить ответ:
Отменить.