Faster Method for removing duplicates

I am trying to remove duplicate nodes from an auto mesh. I have attached a simple script. This works, but takes FOREVER if there are many (greater than 10,000) nodes. Does anyone have an alternate suggestion that would be faster?
node =
[0.1234 5.6789;
3.4567 9.8765;
4.5678 8.7654;
0.1234 5.6789]
% Remove duplicate nodes
node_array=cell(1,length(node));
for j = 1:length(node)
node_array(j,1) = {node(j,:)};
end
node_array_cat = cat(1,node_array{:});
[node junk node_map] = unique(node_array_cat,'rows');
node =
[0.1234 5.6789;
3.4567 9.8765;
4.5678 8.7654]

 채택된 답변

Cedric
Cedric 2013년 3월 29일
편집: Cedric 2013년 3월 29일

1 개 추천

>> node_u = unique(node, 'rows', 'stable')
node_u =
0.1234 5.6789
3.4567 9.8765
4.5678 8.7654
should be more efficient. What was the purpose of this conversion to cell array?

댓글 수: 1

Adam
Adam 2013년 4월 2일
Thanks, I guess I should have been more specific. I need the node_map value as well. Regardless, I coded this a few years ago when I just started with MATLAB I am sure I found an example that was an array and just ran with it. You were correct, I did not need the array for my specific case and you have saved me much needed processing time. Thanks.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

질문:

2013년 3월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by