Remove duplicate rows based on subset of row elements

Hello everyone,
I tried to find a similar problem - relatively simple I believe - but I could not find a solution. If, for instrance, I have a matrix such as
A = [1 1 1 100; 2 2 2 200; 3 3 3 300; 1 1 1 500]
how can I remove from A the fourth row based on the fact that only the thee first elements of the that row are identical to the three elmenets in the first row?
Also, what if I have
A = [1 1 1 100; 2 2 2 200; 3 3 3 300; 1 1 1 500; 1 1 1 600]
and, again, I just want to keep the first row?
Thank you for your help.

 采纳的回答

A(unique(A(1:3),'rows'),:)

5 个评论

indices_to_be_removed = setdiff(1:size(A,1),unique(A(1:3),'rows'));
A(indices_to_be_removed,:) = []
Thank you very much for your answer.
A(unique(A(1:3),'rows'),:)
works for the example I gave.
However it does not work if
A = [1 2 3 100; 4 5 6 200; 7 8 9 300; 1 2 3 500];
Could you still help me in this case (again want to remove the last row)?
Thank you
Ah my bad typo:
[~,idx,~] = unique(A(:,1:3),'rows');
A(idx,:)
Simple, but an excellent solution.

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by