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

9 views (last 30 days)
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

Accepted Answer

Voss
Voss on 16 Apr 2022
Edited: Voss on 16 Apr 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

More Answers (0)

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!