How to fill arrays third column by matching first 2 columns

Dear all,
I have 2 arrays namely A & B.
A is 30 x 3 array with 3rd column zero.
B is 15 x 3 array with the result value in the 3rd column.
I want to fill the 3rd column of A by matching the first 2 columns with B.
for example,
A=[1 5 0;
1 12 0;
4 5 0;
4 9 0;
7 8 0;
8 2 0;
9 13 0];
B = [1 5 2740;
1 12 10;
8 2 1500;
7 8 750];
I want to get the array A's 3rd column filled with the values by comparing B.
results like,
A = [1 5 2740;
1 12 10;
4 5 0;
4 9 0;
7 8 750;
8 2 1500;
9 13 0];
Please suggest me a code for doing this for the larger size of array.
Thank you in advance.

 Réponse acceptée

A=[1 5 0;
1 12 0;
4 5 0;
4 9 0;
7 8 0;
8 2 0;
9 13 0];
B = [1 5 2740;
1 12 10;
8 2 1500;
7 8 750];
F = scatteredInterpolant(B(:,1),B(:,2),B(:,3)) ;
A(:,3) = F(A(:,1),A(:,2)) ;
A
A = 7×3
1.0e+03 * 0.0010 0.0050 2.7400 0.0010 0.0120 0.0100 0.0040 0.0050 1.9946 0.0040 0.0090 0.7700 0.0070 0.0080 0.7500 0.0080 0.0020 1.5000 0.0090 0.0130 -0.8471

3 commentaires

Muthukannan
Muthukannan le 19 Oct 2022
Modifié(e) : Muthukannan le 19 Oct 2022
Thank you for the reply.
In this result, array index 2, 3, 4, 7 carries some other value that are not exist in array B. Since there are no value for these indices in B, I want keep the values in A as zero.
Please suggest.
Thank you.
A=[1 5 0;
1 12 0;
4 5 0;
4 9 0;
7 8 0;
8 2 0;
9 13 0];
B = [1 5 2740;
1 12 10;
8 2 1500;
7 8 750];
[c,ia] = ismember(B(:,1:2),A(:,1:2),'rows','legacy') ;
A(ia,3) = B(:,3)
A = 7×3
1 5 2740 1 12 10 4 5 0 4 9 0 7 8 750 8 2 1500 9 13 0
Thank you so much. Its working.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by