Find unique rows (including rows with reverse x,y) in matrix of x,y coordinates

Hi, I would appreciate your comments on this problem.
I would like to extract unique coordinates for example if x=1, y=2, then this point is similar to y=2,x=1 and only one pair is kept.
x y
1 2
2 1
2 3
3 2
I have tried two approaches; A) using unique comments
[uniqueA M2 M3] = unique(data(:,[1:2]),'rows'); This found no unique row
b) a for loop which I couldn't complete
for j=1:358
clear row3
[row1,col1,v1]=find(data(j,1));
[row2,col2,v2]=find(data(j,2));
[row3,col3,v3]=find(data(:,2)==v1 & Tab_Vn_values2(:,1)==v2);
Tab_Vn_valuesTest(j,:)=Tab_Vn_values2(row3,:);
end
Thank you for your time

3 comentarios

Why you think unique did not work?
I think it is only looking at x1=x2 and y1=y2. Is this right?
Thank you KSSV for always being helpful too.

Iniciar sesión para comentar.

 Respuesta aceptada

Bruno Luong
Bruno Luong el 25 de Sept. de 2018
Editada: Bruno Luong el 25 de Sept. de 2018
Try
[~,i] = unique(sort(data(:,1:2),2),'rows')
data(i,:)

3 comentarios

Thank you, it worked. Would you explain plz
Bruno Luong
Bruno Luong el 25 de Sept. de 2018
Editada: Bruno Luong el 25 de Sept. de 2018
nothing mysterious
if you want pair (x1,y1) matches the pair (x2,y2) regardless if you swap x and y (in other word after applying any permutation of 2 elements), meaning that if and only if you sort them they matches in order. Sorting a permuted array will bring them back to a unique state.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 25 de Sept. de 2018

Comentada:

el 25 de Sept. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by