Delete row with same value but in different columns

I would like to eliminate rows in the matrix with the same value but in different columns
i want the couples are unique in all rows and in all columns
i used "unique" but it delete rows with same value in same columns
...
2 9 % this value is repeat
2 77
2 157
2 399
2 909
2 1247
3 76
3 175
3 398
3 1164
3 1294
4 82
4 169
...
9 2 % this value is repeat
9 10
9 257
...
i used this code but it is not work
for i = 1:length(A)
for j = i+1:length(A)
if ((A(i,1) ~= A(j,2)) && (A(i,2) ~= A(j,1)))
B(n,1) = n
B(n,2) = A(i,1)
B(n,3) = A(i,2)
n = n+1
end
end
end

4 个评论

n =1 ;
for i = 1:length(A)
if A(i,1)> A(i,2)
B(n,1) = A(i,2);
B(n,2) = A(i,1);
n = n+1;
end
end
n =1;
for i = 1:length(A)
if A(i,1)< A(i,2)
C(n,1) = A(i,1);
C(n,2) = A(i,2);
n = n+1;
end
end
BB = unique((B), 'rows');
CC = unique((C), 'rows');
BBCC = [BB;CC];
D = unique(sortrows(BBCC), 'rows');
I solved it
thanks
Hmm doesn't it produce the same result as below??

请先登录,再进行评论。

回答(2 个)

Wanted = unique(sort(matrix,2),'rows')
%or perhaps you want:
[~,idx] = unique(sort(matrix,2),'rows');
Wanted = matrix(idx,:)

2 个评论

Unfortunately it is not what i asked for, but many thanks.
basically i want to delete just one of this row.
According with the previuos example
when i have [2 9; ...; 9 2 ] i want to delete just one of this row.
P.s. the previous code delete other row that were not double
many thanks
Instead of describing, why not show the desired output???

请先登录,再进行评论。

Dear Danilo,
I might have a simpler version that also works. It is probably a bit late but it is something!
stp = 0;
while stp < length(A)
stp = stp + 1;
A(A(:,1) == A(stp,2),:) = [];
end

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by