Как отметил Сардар Усама, ключ заключается в том, чтобы преобразовать трехмерные индексы в линейные индексы. Правильная функция для этого в Matlab - sub2ind . Это не просто:
clc; clear all; close all;
n = 8;
A = rand(n, n, n);
[S, I] = sort(A, 3, 'descend');
sizeA = size(A);
sizeA1 = sizeA(1);
sizeA2 = sizeA(2);
sizeA3 = sizeA(3);
baseVecIndex1 = (1:sizeA1)';
bM1_2D = repmat(baseVecIndex1, 1, sizeA2);
bM1_3D = repmat(bM1_2D, 1, 1, sizeA3);
baseVecIndex2 = 1:sizeA2;
bM2_2D = repmat(baseVecIndex2, sizeA1, 1);
bM2_3D = repmat(bM2_2D, 1, 1, sizeA3);
linearIndexes = sub2ind(sizeA, bM1_3D, bM2_3D, I);
test = A(linearIndexes );
test(:, :, n)
S(:, :, n)