Effacer les filtres
Effacer les filtres

Issue with finding the indices of the minimum element in a 3-Dimensional Array

9 vues (au cours des 30 derniers jours)
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.

Réponse acceptée

Torsten
Torsten le 2 Sep 2022
Modifié(e) : Torsten le 2 Sep 2022
A = rand(10,10,11);
B = A(:);
index = find(A==min(B))
index = 990
B(index)
ans = 2.4262e-04
[i j k] = ind2sub([10 10 11],index)
i = 10
j = 9
k = 10
A(i,j,k)
ans = 2.4262e-04
  4 commentaires
PASUNURU SAI VINEETH
PASUNURU SAI VINEETH le 3 Sep 2022
@Bruno Luong Thanks a lot for the detailed explanation.

Connectez-vous pour commenter.

Plus de réponses (1)

Steven Lord
Steven Lord le 3 Sep 2022
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])
A =
A(:,:,1) = 5 13 9 3 23 6 A(:,:,2) = 22 15 8 24 19 16 A(:,:,3) = 11 21 1 14 2 10 A(:,:,4) = 18 12 20 7 4 17
[value, ind] = min(A, [], 'all', 'linear')
value = 1
ind = 14
A(ind)
ans = 1
If you need the subscripts instead of the linear index, use ind2sub.
[row, column, page] = ind2sub(size(A), ind)
row = 2
column = 1
page = 3

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by