我有两个矩阵A和B,并且希望使用A的第3维对两个矩阵进行排序。为此,我使用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
答案 0 :(得分:0)
使用以下方法将三维下标转换为线性索引:
[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)
答案 1 :(得分:0)
正如Sardar Usama指出的,关键是将3维索引转换为线性索引。在Matlab中执行此操作的正确函数是sub2ind。这并不简单:
/text()