Extract indices from other matrix corresponding to the minimum

1 次查看(过去 30 天)
I currently have a matrix in which I want to determine the column which corresponds to the minimum of each row, which I can do the following way:
Mat = rand(30, 2) ;
[~, min_idx] = min(Mat, [], 2, 'linear') ;
[~, col] = ind2sub(size(Mat), min_idx) ;
Following that, I would like to use col, to extract the corresponding 3rd dimension in another matrix X:
X = rand(30, 3, 2) ;
Xmin = X(:,:,col) ;
For Xmin I would expect to get a 2D matrix, where each row corresponds to the index col in the 3rd dimention extracted from X, however that is not the case for some reason. Do you know how I could accomplish the above?
Thanks for your help in advance.

采纳的回答

Matt J
Matt J 2022-2-7
编辑:Matt J 2022-2-7
Mat = rand(30,2);
X = rand(30, 3, 2) ;
[~, min_idx] = min(Mat, [], 2, 'linear') ;
Xp=reshape( permute(X,[1,3,2]),[],3);
Xmin=Xp(min_idx,:)
Xmin = 30×3
0.0712 0.3075 0.8858 0.6488 0.0418 0.7136 0.9145 0.4471 0.9905 0.1935 0.1567 0.1708 0.1016 0.3393 0.3916 0.8534 0.8261 0.4123 0.2960 0.7503 0.8993 0.1845 0.9356 0.2080 0.7731 0.7444 0.5096 0.5429 0.7494 0.9430

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by