How to match two arrays in Matlab

Hi, I want to know if it is possible to match the values of an array (cell by cell) A (:, 1) with an array B (:, 2) so that when calling any array C (:, 1) it gets the values of B (:, 2). Thanks in advance.
A = B = input C =
1 21 22 1
2 10 11 3
3 23 25 6
4 33 30 8
5 32 35 7
6 21 20 5
7 25 27 4
8 24 18 9
9 19 16 10
10 10 33 2

7 Comments

Can you give a clear example of variables A and B, and how do you want to match the elements and what will be the output matrix C.
Yro
Yro on 19 Mar 2020
Edited: Yro on 19 Mar 2020
Thanks for your reply. I modified the question, what I need is to index the array A and B, so that when loading array C I get the index of B.
Can you explain how you determined the values in C and their order? I don't see how you could get C, as there are no matches at all between A and the second column of B.
Yro
Yro on 19 Mar 2020
Edited: Yro on 19 Mar 2020
Hi, I didn't get C, C is the array to read. The question is whether it is possible to get array B (:, 2) from C (:, 1).
Thanks
How would you do that by hand? I don't understand how these relate to one another. As long as I don't understand how it works in the first place I can't suggest a solution.
C seems to a selector array. The value in C is an index into A and B -?
Yro
Yro on 20 Mar 2020
Edited: Yro on 20 Mar 2020
Hi, thanks for your attention, the C array are random values to read from a file, what I need is, once read, get the values corresponding to B. Something like this:
1 = [21 22]
3 = [23 25]
6 = [21 20]
...

Sign in to comment.

 Accepted Answer

You can do this type of indexing as follows
A = (1:10)';
B = [21 22;
10 11;
23 25;
33 30;
32 35;
21 20;
25 27;
24 18;
19 16;
10 33];
C = [1 3 6 8 7 5 4 9 10 2]';
D = B(C,:)
result
D =
21 22
23 25
21 20
24 18
25 27
32 35
33 30
19 16
10 33
10 11

2 Comments

The original question relied on values in A to locate the proper row in B. If A might be something other than 1-10 then it must be part of the solution. If A is merely a row index for B then there is no need for A.
Thank you very much, it works. Thank you all for your time and attention. Really very grateful.

Sign in to comment.

More Answers (1)

BobH
BobH on 19 Mar 2020
Edited: BobH on 19 Mar 2020
Is this what you are trying to get? Second column of B based on C matching A
A = 1:10;
B = [21 22;10 11;23 25;33 30;32 35;21 20;25 27;24 18;19 16;10 33];
C = [1 3 6 8 7 5 4 9 10 2];
arrayfun(@(X) B( A(X), 2 ), C )
ans =
22 25 20 18 27 35 30 16 33 11

2 Comments

Thanks for your attention, something like that, but I really need, as I described earlier, something like this for the values of array:
1 = [21 22]
3 = [23 25]
6 = [21 20]
...
Please update the original question to reflect your desired result. As it stands now, you are only asking for the second column of B "...it gets the values of B (:, 2)"

Sign in to comment.

Products

Asked:

Yro
on 19 Mar 2020

Commented:

Yro
on 20 Mar 2020

Community Treasure Hunt

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

Start Hunting!