Efficient Method of Solving Convex Hull Related Problem
Ältere Kommentare anzeigen
Long request, but appreciative of anyone who has a good idea. I have a large number of X-Y pairs that I need to fit a convex hull. The problem is, I need to fit a convex hull with 90% of the X-Y pairs such that the selected pairs yield the polygon with the smallest area.
For example, say we have 5 pairs: (1,1), (.1,.5), (0,0), (1,0), (3,1)
The convex hull from convhull(x,y) would give k = [1 3 4 5]. If I only wanted the convex hull that included 4 of the 5 points such that it would have the smallest polygon (area-wise), it would remove point 5 and the convex hull would be k = [1 3 4].
I have a brute force method of doing this, but it would take weeks to run. I have around 600,000 X-Y pairs. I want to remove 60,000 of them. One method is to calculate the convex hull and store the area. Then, take turns in removing each point of the convex hull (one at a time) from the X-Y pairs, recalculating the area of the new convex hull, and storing the difference between the original area and the new area. Then, permanently remove the point that showed the greatest difference in area. Repeat this 60,000 times.
Obviously this is inefficient. Does anyone have a better idea?
5 Kommentare
Matt J
am 16 Jul. 2013
The convex hull from convhull(x,y) would give k = [1 3 4 5].
No, it gives
>> convhull(x,y)
ans =
1
2
3
4
5
1
Adam Montjoy
am 16 Jul. 2013
Matt J
am 16 Jul. 2013
Sounds like a tough global minimization problem. Is there an ulterior motive for this?
Adam Montjoy
am 16 Jul. 2013
Matt Kindig
am 16 Jul. 2013
Could you post your brute-force solution? Maybe we can offer some speed-ups for that approach.
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Bounding Regions finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!