Revision: 10996
http://octave.svn.sourceforge.net/octave/?rev=10996&view=rev
Author: cdf
Date: 2012-09-11 09:09:31 +0000 (Tue, 11 Sep 2012)
Log Message:
-----------
vectorize unnecessarily loopy code
Modified Paths:
--------------
trunk/octave-forge/main/geometry/inst/polygons2d/distancePointPolyline.m
Modified: trunk/octave-forge/main/geometry/inst/polygons2d/distancePointPolyline.m
===================================================================
--- trunk/octave-forge/main/geometry/inst/polygons2d/distancePointPolyline.m 2012-09-10 13:18:55 UTC (rev 10995)
+++ trunk/octave-forge/main/geometry/inst/polygons2d/distancePointPolyline.m 2012-09-11 09:09:31 UTC (rev 10996)
@@ -1,5 +1,6 @@
## Copyright (C) 2003-2011 David Legland <dav...@gr...>
## Copyright (C) 2012 Adapted to Octave by Juan Pablo Carbajal <car...@if...>
+## Copyright (C) 2012 Carlo de Falco (Speed up by vectorization)
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
@@ -51,18 +52,23 @@
# allocate memory for result
minDist = inf * ones(Np, 1);
+
+ ## compute distance between current each point and all edges
+ dist = distancePointEdge(point, edges);
+ ## get the minimum distance
+ minDist = min(dist, [], 2);
+
+ ## original loopy verion:
# process each point
- for p = 1:Np
- # construct the set of edges
- edges = [poly(1:end-1, :) poly(2:end, :)];
-
- # compute distance between current each point and all edges
- dist = distancePointEdge(point(p, :), edges);
+ # for p = 1:Np
+ # # construct the set of edges
+ # edges = [poly(1:end-1, :) poly(2:end, :)];
+ # # compute distance between current each point and all edges
+ # dist = distancePointEdge(point(p, :), edges);
+ # # update distance if necessary
+ # minDist(p) = min(dist);
+ # end
- # update distance if necessary
- minDist(p) = min(dist);
- end
-
# process output arguments
if nargout<=1
varargout{1} = minDist;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|