Hi everyone,

Found a great new function today.

http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=6243

I was looking for something that could quickly make an outline from a mess of points, specifically a quick way to create a polygon shape to use with fill function to show the outline of a radial site's coverage area. Passing the complete array of locations results in a funky 80's Escher-like motif that's not at all pretty.

Anyway, as it turns out, the built-in "convhul" function does this, but it's goal is to minimize the circumference of the polygon whereas "hullfit" minimizes the polygon's area.

Why is this so noteworthy? Well, meshgrid and pcolor (among other functions) use convhul, and as we know they do a lousy job of showing data in areas that don't really exist. (That bend in NJ around Tuckerton is especially annoying, as is Sandy Hook since both tend to result in Codar data appearing on land.)

Well, the comments in "hullfit" showcases its true usefulness. I repeat some snippets from the simple example here...

xi=linspace(min(x),max(x),100);

yi=linspace(min(y),max(y),100);

zi=griddata(x,y,z,xi,yi');

k=hullfit(x,y,0.1);

[xx,yy]=meshgrid(xi,yi);

in=inpolygon(xx,yy,x(k),y(k));

zi(~in)=NaN;

pcolor(xi,yi,zi),shading interp

This far surpasses the alternative way I had developed a few months ago using the mapping toolbox's distance function and an arbitrary distance threshold between points.

And, better yet, I also (re)discovered another cool function called "inpolygon" which is sure to be of future use.

The year is already starting well. Enjoy!

## Tuesday, January 02, 2007

Subscribe to:
Posts (Atom)