首页 > 解决方案 > 如何在维度矩阵上排序后获取元素

问题描述

我有两个矩阵 A 和 B,并希望使用 A 的第三维对这两个矩阵的数据进行排序。为此,我使用 sort 来获取结果和索引。

我不知道如何使用索引来获取矩阵 B 上的排序数据。

A = rand(2,2,2) B = rand(2,2,2) [S I] = sort(A, 3); S B(I) % Here, don't sort B according to the same sort than A

标签: matlabsorting

解决方案


将您的三维下标转换为线性索引:

[r, c, ~] = size(A);
LinInd = (I-1)*r*c + reshape(1:r*c, r, c);  %For >=R2016b
%LinInd = bsxfun(@plus, (I-1)*r*c, reshape(1:r*c, r, c));   %For <R2016b

现在使用这些线性索引进行排序,B即:

B(LinInd)

推荐阅读