display corresponding column matrix

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

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

A = [1 3 5; 2 4 5; 5 4 7; 2 8 10];
B = [29 87 15];
%Another approach without find()
[~,idx]=min(B)
idx = 3
data=A(:,idx)
data = 4×1
5 5 7 10
thank you for your response @KALYAN ACHARJYA @Dyuman Joshi ,if there is more than one minimum values in B then how to fetch the corresponding column sir.
Which values do you want if there are more than one minimum values? 1st minimum, 2nd or last? Or All?
A = [1 3 5; 2 4 5; 5 4 7; 2 8 10];
B = [29 15 15]; % here two minimum numbers
[~,idx]=find(B==min(B));
data=A(:,idx)
data = 4×2
3 5 4 5 4 7 8 10
thank you for your response @Dyuman Joshi , if there is more than one minimum values (similar) then i need to display the 1st minimum value in B and its corresponding column in A
Thank you for your response @KALYAN ACHARJYA
Then proceed with the approach I mentioned -
A = [1 3 5; 2 4 5; 5 4 7; 2 8 10; 3 5 7];
B = [29 87 15 15];
[~,idx]=min(B)
idx = 3
data=A(:,idx)
data = 5×1
5 5 7 10 7
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)

Categories

Products

Release

R2020a

Community Treasure Hunt

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

Start Hunting!