Issue with finding the indices of the minimum element in a 3-Dimensional Array
6 次查看(过去 30 天)
显示 更早的评论
For a 2D array A, the command
[row,column]=find(A==min(min(A)))
outputs the row and column indices of the minimum respectively. But using a similar technique isn't working for a 3D array. For a 10x10x11 array variance_matrix (file attached), the command
find(variance_matrix==min(min(min(variance_matrix))))
outputs the location "151" which I presume represents the element in 2nd page/sheet, 5th column and 1st row.
But, the command
[row,col,depth] = find(variance_matrix==min(min(min(variance_matrix))));
outputs an absurd answer. "depth" is shown to be a logical operator while "col" (16) exceeds the actual column size (10).
I'm hoping someone would explain what's going wrong and if there's a right way to do it for multidimensional (>=3) arrays.
0 个评论
采纳的回答
更多回答(1 个)
Steven Lord
2022-9-3
Use the 'all' dimension argument and the 'linear' index argument to obtain the linear index of the maximum of the array considering the data in all dimensions.
A = reshape(randperm(24), [3 2 4])
[value, ind] = min(A, [], 'all', 'linear')
A(ind)
If you need the subscripts instead of the linear index, use ind2sub.
[row, column, page] = ind2sub(size(A), ind)
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!