Fast way to 2D data thinning
Show older comments
Hi,
I have a set of 2D data in the format [X Y] and am going to thin them based on a certain distance threshold,i.e. if points are very close less than a threshold, one is eliminated. This process continues until the distance between any two points is bigger than the threshold. I developed a code to do that but it is very time consuming. I am wondering if there is a better way of doing this in Matlab.
Thank you.
Mehdi
Answers (1)
Andrei Bobrov
on 17 Jul 2015
Edited: Andrei Bobrov
on 17 Jul 2015
X = randi([5,100],20,1);
Y = randi([-100,10],20,1);
trld = 10; % threshold
n = numel(X);
ii = nchoosek(1:n,2);
a = hypot(X(ii(:,1))-X(ii(:,2)),Y(ii(:,1))-Y(ii(:,2)));
lo = a > trld;
ind = unique(ii(lo,:));
out = [X(ind),Y(ind)];
1 Comment
Mehdi Ravanbakhsh
on 17 Jul 2015
Categories
Find more on MATLAB Coder in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!