inpolygon usage with big matrices or faster function
43 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ahmet Hakan UYANIK
el 9 de Nov. de 2022
Comentada: Ahmet Hakan UYANIK
el 10 de Nov. de 2022
Hello,
I have a matrix for latitudes with the size of 12200x6700 and longitudes with same size as well. I have a polygon of a river as well to check if the points are inside the polygon. However when I do
in = inpolygon(longitude,latitude,Poly.Lon,Poly.Lat);
it never ends.
If I check it by each column with for loop(6700 times), it again takes so much time.
Is there any way to fasten this single line. Like maybe using parfor by seperating the longitude and latitude?
Thanks in advance, Cheers
0 comentarios
Respuesta aceptada
Bruno Luong
el 9 de Nov. de 2022
At some point it was 10 time faster than MATLAB stock function.
But you can start to discard points outside the conves hull first as Matt suggests then refine with this non convex polygonal function.
Más respuestas (1)
Matt J
el 9 de Nov. de 2022
Editada: Matt J
el 9 de Nov. de 2022
Is it a convex polygon? There are much faster alternatives to inpolygon for convex polygons,e.g.,
Even if it is not a convex polygon, perhaps you can frst discard points that are not in the convex hull of the polygon, thereby reducing the amount of work that inpolygon needs to do.
2 comentarios
Bruno Luong
el 9 de Nov. de 2022
"I have a polygon of a river"
Personally I never seen a convex river. ;-)
Ver también
Categorías
Más información sobre Computational Geometry en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!