MATLAB Answers

Robert
0

Extracting info from multiple matrices

Asked by Robert
on 17 Nov 2018
Latest activity Edited by Stephen Cobeldick on 20 Aug 2019
Hello,
Wondering if anyone could suggest a simple way to extract info from matrix B based on Matrix A. I have two "correponding" matrices, info in Matrix A relate to info in Matrix B:
A=[1.02 0.2; 2.2 0.4; 0.5 0.6; 4.8 0.5; 1.5 0.3];
B=[58 63 27 1 478];
In this case, I need to identify the maximum value in Matrix A column 2, and then extract the associated info from Matrix B
Maxi=max(A(:,2));
Maxi =0.6, which correspond to 3rd row of Matrix A, and the to 3rd row of Matrix B, or in this case the value = 27
This is a very simple example, as my matrices are very large.
Your suggestions are very appreciated.

  0 Comments

Sign in to comment.

1 Answer

Answer by madhan ravi
on 17 Nov 2018
Edited by madhan ravi
on 17 Nov 2018
 Accepted Answer

A=[1.02 0.2; 2.2 0.4; 0.5 0.6; 4.8 0.5; 1.5 0.3];
B=[58 63 27 1 478];
[value,idx]=max(A(:,2))
B(idx) %corresponding value in B

  4 Comments

Show 1 older comment
Anytime :)
here only two matrices are there A and B
suppose if there are 10 matrices A, B,C,D,E,F,G,H,IJ and same operation sholud be done as u explaines in the code how to do that?? please help
M.Prasanna kumar wrote: "suppose if there are 10 matrices A, B,C,D,E,F,G,H,IJ and same operation sholud be done as u explaines in the code how to do that?"
As always in such situations, the solution is to organize the data in one array, e.g. a cell array, and then trivially use indexing (which is simple and efficient). Here is an example using cellfun, but you could easily use a loop too:
[~,idx] = max(A)
out = cellfun(@(m)m(idx),{B,C,D,E,F,G,H,I,J},'uni',0)
Adjust the dimensions and indexing to suit your arrays.
See also original question from M.Prasanna kumar:

Sign in to comment.