How to match two arrays in Matlab

75 views (last 30 days)
Yro
Yro on 19 Mar 2020
Commented: Yro on 20 Mar 2020
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
Yro
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

Ameer Hamza
Ameer Hamza on 20 Mar 2020
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
Yro
Yro on 20 Mar 2020
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
BobH
BobH on 20 Mar 2020
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.

Community Treasure Hunt

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

Start Hunting!