Replace values in one column based on the content in several other columns.
2 次查看(过去 30 天)
显示 更早的评论
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?
0 个评论
采纳的回答
Bruno Luong
2018-11-13
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
更多回答(1 个)
madhan ravi
2018-11-13
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
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!