如何在Matlab中对多维矩阵的行进行排序而不改变第一列中元素的顺序?

thD*_*vrs 2 sorting matlab matrix octave multidimensional-array

我有一个3D矩阵A(i,j,k).问题如下:

我有很多房间.我使用第一个维度(i)来表示房间ID.每间客房均配有多把椅子.我使用第二维(j)来表示椅子的ID.每把椅子都有坐标x,y,z.我用第三维(k's)来表示坐标.

例如,A(4,3,1)表示第4个房间,第3个椅子,x坐标; A(4,3,2)表示相同的房间和椅子,但y坐标; 和A(4,3,3)的z坐标.

根据其中一个尺寸,我需要独立于其他房间对每个房间的椅子进行分类.

假设我只想对第一个房间的椅子进行排序,即A(1,:,:),根据它们的x坐标,即A(1,:,1).

有人可以帮我解决如何在Matlab 2016b中做到这一点吗?

非常感谢!

Lui*_*ndo 5

我认为这样做你想要的:

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
Run Code Online (Sandbox Code Playgroud)