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

3 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)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!