Select unique couples from two vectors (?)
9 次查看(过去 30 天)
显示 更早的评论
Hello!
I have a code I would like to perform withouth for loop, but I don't know how to describe it, so I'll show you with an example :)
I have two vectors, v1 and v2:
1 7
4 2
6 8
2 4
7 1
8 6
These vectors represent the couples: 1<>7, 4<>2, etc. The couple 1<>7 is the same as 7<>1, but each vector contains all the elements, so all the couple are repeated twice.
I would like to remove the duplicated couples, no matter about the order.
I actually do this with a for loop, but for big vectors it is very slow:
v1f = v1(1);
v2f = v2(1);
for i = 1:numel(v1)
if isempty(intersect(v2(i), v1f))
v1f(i) = v1(i);
v2f(i) = v2(i);
end
end
v1f = v1f(v1f>0);
v2f = v2f(v2f>0);
How can I do it in a faster and nicer way? Thank you.
0 个评论
采纳的回答
Walter Roberson
2013-12-7
v = [v1, v2];
v = sort(v, 2);
[uniquerows, idx] = unique(v, 'rows');
uniquev1 = v1(idx);
uniquev2 = v2(idx);
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!