How can I replace value of specific cell value depending on another matrix?

1 view (last 30 days)
A=[8 3 1; 0 0 0; 7 9 7; 5 5 5; 1 4 5]; D=[5 5 0; 7 9 0]; How can I compare between A and D depending on the first two columns and update the D matrix like,
D_modified=[5 5 5; 7 9 7];

Accepted Answer

Birdman
Birdman on 4 Apr 2018
Edited: Birdman on 4 Apr 2018
D_modified=A(all(ismember(A(:,1:2),D(:,1:2)),2),:)

More Answers (1)

Akira Agata
Akira Agata on 4 Apr 2018
If some rows in D does not have corresponding rows in A, need some more trick. Here is an example.
% Sample data (1st and 4th row of D has no corresponding row in A)
A = [8 3 1; 0 0 0; 7 9 7; 5 5 5; 1 4 5];
D = [5 4 0; 7 9 0; 8 3 0; 8 2 1];
[~,loc] = ismember(D(:,1:2),A(:,1:2),'rows');
idx = loc ~= 0;
D_modified(idx,:) = A(loc(idx),:);

Categories

Find more on Data Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!