display corresponding column matrix

6 views (last 30 days)
Suppose I have 3 column matrices or 4*3 matrix stored in A such that
A = [1 3 5 ; 2 4 5 ; 5 4 7 ; 2 8 10]
and i have another row matrix with 3 columns(no. of columns same as A) stored in B such that
B = [29 87 15]
Now i want to display the least value in B and corresponding column vector in A.
Expected Output:
since from the above 15 is least in B set , i will display 15 along with corresponding column in A(15 is in 3rd column so we take 3rd column of A) such that
C = 15 (least value in B)
D = [5 ; 5 ; 7 ; 10] (corresponding 3rd column of least value)
I need a generalised code suppose if i have A = (15*150 matrix) and B = (1*150 matrix) then i need to display the least values in B and as well as display the corresponding column(same column where least value present in B) in A. I hope this explanation helps, thank you in advance

Accepted Answer

KALYAN ACHARJYA
KALYAN ACHARJYA on 22 Jun 2023
Edited: KALYAN ACHARJYA on 22 Jun 2023
A = [1 3 5 ; 2 4 5 ; 5 4 7 ; 2 8 10]
A = 4×3
1 3 5 2 4 5 5 4 7 2 8 10
B = [29 87 15]
B = 1×3
29 87 15
idx=find(min(B)==B)
idx = 3
data=A(:,idx)
data = 4×1
5 5 7 10
It can be condensed into a single line as well. You can now proceed with the remaining parts on your end too.
  9 Comments
Stephen23
Stephen23 on 22 Jun 2023
Edited: Stephen23 on 22 Jun 2023
Regarding https://www.mathworks.com/matlabcentral/answers/1986584-display-corresponding-column-matrix#comment_2791224 even for multiple minimums, no FIND is required, logical indexing is simpler and more efficient:
A = [1,3,5; 2,4,5; 5,4,7; 2,8,10];
B = [29 15 15]; % here two minimum numbers
idx = B==min(B);
out = A(:,idx)
out = 4×2
3 5 4 5 4 7 8 10

Sign in to comment.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!