Find values in 2D array corresponding to vector of indices obtained from another array

2 vues (au cours des 30 derniers jours)
Hello!
I have a 3 x (variable number, in this case 5) array amp:
amp =
Columns 1 through 5
0.04 0.05 0.06 0.07 0.05
0.07 0.03 0.02 0.06 0.06
0.06 0.03 0.06 0.04 0.07
Indices idx of the maximum value for each column are as follows:
idx =
2 1 1 1 3
I have another 3 x 5 array frq
frq =
50 16 18 50 50
50 25 25 50 43
47 20 20 50 39
and would like to get a vector of the values in frq that correspond to the indices for the row shown in idx. That should be
50 16 18 50 39
frq(idx) or frq(:,idx) come up with a mess, and I have tried to use sub2ind and also come up with a mess. I'm sure this could be done in a loop easily, but would like to know how to do it the "MATLAB" way!
Thanks.
Doug Anderson

Réponse acceptée

Voss
Voss le 16 Avr 2022
Modifié(e) : Voss le 16 Avr 2022
amp = [0.04 0.05 0.06 0.07 0.05
0.07 0.03 0.02 0.06 0.06
0.06 0.03 0.06 0.04 0.07];
frq = [50 16 18 50 50
50 25 25 50 43
47 20 20 50 39];
[~,idx] = max(amp,[],1);
[m,n] = size(frq);
result = frq(sub2ind([m n],idx,1:n))
result = 1×5
50 16 18 50 39

Plus de réponses (0)

Catégories

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

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by