Replace values in one column based on the content in several other columns.

2 vues (au cours des 30 derniers jours)
merialu
merialu le 13 Nov 2018
Commenté : merialu le 14 Nov 2018
Hi
I have two matrices containing x,y and z coordinates. These matrices also contain a column with values for each point.
Looks something like this:
A=[x y z value, 1 1 1 1; 1 2 1 0, 2 1 1 3, 2 1 2 4]
B=[x y z value, 1 1 1 1; 1 2 1 0]
the first matrix (A) have much more values than the second one (B). What i am trying to do is to replace the values in the large matrix (A) with the values from the smaller matrix (B) whenever the coordinates are the same. Thus the values in the x y and z column need to match.
Any ideas how to solve this?

Réponse acceptée

Bruno Luong
Bruno Luong le 13 Nov 2018
A = [1 1 1 0;
1 2 1 1;
2 1 1 3;
1 1 1 3;
2 1 2 4]
B = [1 1 1 1;
1 2 1 0]
[b,loc] = ismember(A(:,1:3),B(:,1:3),'rows');
A(b,:) = B(loc(b),:);
The result after replacement is
A =
1 1 1 1
1 2 1 0
2 1 1 3
1 1 1 1
2 1 2 4

Plus de réponses (1)

madhan ravi
madhan ravi le 13 Nov 2018
A=[ 1 1 1 1; 1 2 1 0; 2 1 1 3; 2 1 2 4] %perhaps?
B=[ 1 1 1 1; 1 2 1 0]
index=ismember(A(1:3,:),B,'rows')
A(index,:)=somevalues

Catégories

En savoir plus sur Graphics Object Programming dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by