Другим способом является игнорирование индексов из max
:
indices2 = M1 == repmat(M1max,[1,1,size(M1,3)]);
result = reshape(M2(indices2),size(M1max));
. Может быть проблема точности при сравнении двойных чисел.В этом случае вы можете сделать
indices2 = repmat(M1max,[1,1,size(M1,3)]) - M1 < eps;
Кроме того, будет проблема с этим кодом, если в M1 в 3-м измерении существует несколько идентичных максимальных значений.Мы можем поймать этот случай с
assert(sum(indices2(:))==numel(M1max),'Multiple maximum values found')