Replacing same rows with same variables in first to third column

1 次查看(过去 30 天)
Hi. I have two matrices named aa and m.
aa=[1 2 3 7
4 5 6 8
7 8 9 9
3 2 3 8
6 5 6 7
7 8 7 9];
mm=[1 2 3 5
4 5 6 9
7 8 9 6];
I want to replace the rows of aa with the rows of m that have the same values in first to third column.
How can I do that?
Thanks a lot.
  2 个评论
Image Analyst
Image Analyst 2017-12-21
What if m is
mm=[1 2 3 5
1 2 3 9
4 5 6 9
7 8 9 6];
Which row of m, the first or the second, should replace the first row of aa?

请先登录,再进行评论。

回答(2 个)

Jos (10584)
Jos (10584) 2017-12-21
No need for loops at all! Use both outputs of ismember and replace accordingly
aa = [1 2 3 7
4 5 6 8
7 8 9 9
3 2 3 8
6 5 6 7
7 8 7 9
1 2 3 999];
mm = [1 2 3 5
4 5 6 9
7 8 9 6];
[tf,loc] = ismember(aa(:,1:3),mm(:,1:3),'rows')
% tf indicates which rows in aa are found where (loc) in mm (only for columns 1-3)
aa(tf,:) = mm(loc(tf),:) % replace those rows

KSSV
KSSV 2017-12-21
编辑:KSSV 2017-12-21
aa(1:3,1:3) = mm(1:3,1:3) ;

类别

Help CenterFile Exchange 中查找有关 Numeric Types 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by