Search Comments and Ratings

go

Comments and Ratings

   
Date File Comment by Comment Rating
18 Oct 2009 MESH2D - Automatic Mesh Generation Generates unstructured triangular meshes for general 2D geometry. Author: Darren Engwirda Karaoulis, Marios

18 Oct 2009 MESH2D - Automatic Mesh Generation Generates unstructured triangular meshes for general 2D geometry. Author: Darren Engwirda Karaoulis, Marios

Do you have any thoughts going 3D?

14 Oct 2009 MESH2D - Automatic Mesh Generation Generates unstructured triangular meshes for general 2D geometry. Author: Darren Engwirda Engwirda, Darren

Author comment: v24 was posted to resolve a licence conflict. The Mathworks no longer allows code to be released under a GNU GPL, so this has been removed for v24.

There are some (minor) revisions to the code, based on user feedback. Specifically, v24 may be slightly slower than v23, but should generally produce higher quality meshes, especially for complex geometries.

Comments/feedback is always welcome - d_engwirda@hotmail.com

14 Oct 2009 MESH2D - Automatic Mesh Generation Generates unstructured triangular meshes for general 2D geometry. Author: Darren Engwirda Karaoulis, Marios

Hi, thanks again for your software. What's new in this version ( i am using v23).

07 Sep 2009 tinterp - an alternative to griddata Linear and quadratic interpolation for scattered data Author: Darren Engwirda lopez, carlos

I would like to have more information of the theory behind this. What it means that it is "quadratic"? Should it be exact for 2nd. degree functions? I tried this
X=[1:10 1:10];Y=[zeros(1,10) ones(1,10)];%Data points
f=100*(X').^2; %data points
tri=delaunay(X,Y);%Triangulation
triplot(tri,X,Y) %to interpret the case
x=linspace(0,11,300);y=repmat(0.5,1,300);
fC=tinterp([X' Y'],tri,f,x,y,'quadratic');
plot(diff(fC));%should be linear if the interpolant is exact for 2nd degree

Apparently from this example the interpolant is C0 (i.e. continuous but not differentiable), but it is a little bit misleading what is meant by "quadratic".

I tried to contact the author before posting, but apparently changed addres. Thank you anyway for his contribution.

01 Sep 2009 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda Kohoutek, Jack

14 May 2009 tinterp - an alternative to griddata Linear and quadratic interpolation for scattered data Author: Darren Engwirda Williams, Jo

19 Apr 2009 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda F, Nik

13 Mar 2009 Fast sparse matrix vector product sparse matrix vector product Author: Darren Engwirda Becker, Stephen

There's actually a very important point here. Because of how Matlab stores a sparse matrix (see Tim Davis' book, or read the help on, say, mxGetIc), and because a major bottleneck for these computations is loading data into the CPU's cache, it is MUCH faster to store a matrix by row, instead of column, when doing matrix-vector multiples.

In Matlab, this is easy to remedy: simply take the transpose.

So, this cool trick can save you time. If you want to do this repeatedly:
>> y = A*b
instead, do this:
>> At = A.'; % a one-time cost
>> y = At.'b

But, this trick only works on newer versions of Matlab. On, say, R2006b, a call like
>> y = At.'b
will actually calculate the transpose of At, so this is very slow!

On older versions of Matlab, it's likely that this SMVP code will really help, but it might not be as helpful on R2008, for example.

On linux, non-multithreaded R2006a, I found that SMVP took about 60% the time of Matlab's own multiply. So, good work!

03 Feb 2009 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda Moser, Clemens

Works very well, there is just a minor issue: the contours are not interpolated at the boundaries of the surface .

23 Nov 2008 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda Giaccari, Luigi

Thank You,
 it was very helpfull, impressive code.

If I can suggest an improvement:
a mex version will be the top of performance.

07 Nov 2008 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda Lindbo, Dag

Very nice routine!

Is it reasonable to look for more efficient method for the particular case when the points to query at can be assumed to lie on a cartesian grid? E.g. imagine

in = inpoly(p,node);

with p = {X, Y}, where [X Y] = meshgrid(x,y)

Thanks!

18 Sep 2008 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda Wan, Lili

It is a good job, but I still find some problems when detecting a point of a polygon lies on the polygon edge. My test run in Matlab R2006a. Suppose node be the points of a polygon,
"[in,on] = inpoly(node,node);" can get right results, but after running
"[in,on] = inpoly(node(1,:),node);", on is false.

06 Aug 2008 Fast Sparse LU substitution A dedicated mex-file for use with UMFPACK to complete the forward and back substitution quickly Author: Darren Engwirda Xu, Donghua

It appears to work in the x32 but not the x64 version of Matlab. In the latter, it is actually slower than the built-in method, particularly for large sparse matrices. I recommend the cs_lu or klu methods by TA Davis which are very efficient in the x64 version.

03 Apr 2008 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda Müller, Armin

Very fast, very accurate. Good jobb, Darren!

25 Mar 2008 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda Marks, Joseph

My review below is too harsh.

After examining several runs on many different "ultra-concave" polygons, I have found inpoly to be very good.

If the error problem I reported earlier is real, it is very rare. It could have been due to some other factor in my software including my own bug.

inpoly is very much faster than inpolygon for large test vectors.

19 Mar 2008 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda Marks, Joseph

inpoly provides a very large speed increase for large polygon problems!

Unfortunately, I too noticed a bug.

I am checking a very large rectangle grid's points to see if they are in a "massively concave polygon" -- think the outline of a "robot with arms, legs, etc."

The inpoly algorithm "incorrectly" *ADDS* a "shock of hair" to the "robot" -- obviously I am speaking metaphorically here -- and hence I am stuck using the *MUCH SLOWER* "inpolygon".

Has anyone reported an error like this to you?

Is there anything I can do?

Is there some middle ground between the two -- for example, by and large, I am dealing with concave polygons that just have an outside boundary -- no hole or anything.

07 Feb 2008 tinterp - an alternative to griddata Linear and quadratic interpolation for scattered data Author: Darren Engwirda M., Craig

I make hundreds of 2D interpolations for a given triangulation. This function is exactly what I need. Thx.

16 Apr 2007 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda Engwirda, Darren

Small bug (as noted below) fixed.

Users don't beware, inpoly should work in all cases.

Further bugs can be emailed if necessary...

12 Apr 2007 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda Storer, Alex

Very fast, but fails on some cases. Users beware! Perhaps older versions are more robust?

08 Apr 2007 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda M, Michael

It's an incredible speed up compared with the poor inpolygon function delivered with MATLAB! Must be O(M*log(N)) ;-)

21 Feb 2007 Fast sparse matrix vector product sparse matrix vector product Author: Darren Engwirda Davis, Tim

Regarding the comment on checking for NULL return of mxCreateDoubleMatrix: it's not necessary. If the allocation fails, MATLAB will automatically terminate the mexFunction and clean up any allocated memory. If it was malloc, then yes, you would need to check for NULL. This is a fine example of how to use mxCreateDoubleMatrix.

The only design issue that should be corrected is the "nlhs!=1" test (a minor point). If you simply do

>> smvp(A,b)

with no output arguments, then nlhs is set to zero. You can still write to plhs[0], and the result will go in the "ans" variable.

20 Feb 2007 Fast sparse matrix vector product sparse matrix vector product Author: Darren Engwirda S., Martin

Works but offers almost very minor 8% speedup as of Matlab 2006.
I multiplied 700,000 x 700,000 matrix with 2,000,000 nonzero entries times a 700,000 vector and got only 8% faster than Matlab 2006. Not worth using unless there is more speedup in other settings.

2) The routine fails to check that the matrix allociation succeeded (may run out of memory). Need to add a NULL check to

plhs[0] = mxCreateDoubleMatrix(mxGetM(prhs[0]), 1, mxREAL);

3) Change if (nlhs!=1) to if (nlhs > 1)

Summary: works but very limited speedup.

12 Feb 2007 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda K., Matt

Perfectly suited for my needs of finding points on the boundary of a polygon

13 Jan 2007 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda Groh, Friedemann

20 Dec 2006 Fast sparse matrix vector product sparse matrix vector product Author: Darren Engwirda Lee, Shelley

It would be excellent if it can support
complex arithmetics.

01 Dec 2006 tinterp - an alternative to griddata Linear and quadratic interpolation for scattered data Author: Darren Engwirda D'Errico, John

An alternative to griddata - similar in speed when you add in the time for the triangulation.

The advantage of this code is if you already have a triangulation, then this saves the time to regenerate it. It also allows you to use a custom, non-delaunay triangulation - not an option at all for griddata.

A disadvantage of this code is it forces you to do the triangulation to call it. Its an unnecessary step for many people, so I'd probably be tempted to allow the user to not supply the triangulation, so if t is empty it could just call delaunay.

This code offers properties similar to griddata. It will not extrapolate beyond the convex hull of the data, Extrapolation is risky business of course, so thats not necessarily bad.

Good help, examples. The quadratic interpolant is an interesting idea.

08 Aug 2006 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda Tahir, Rabi

Works well... seems to be a bit slow, but I may be showing a bias (comparing with traditional fortran generated machine code)

28 Jul 2006 Fast Sparse LU substitution A dedicated mex-file for use with UMFPACK to complete the forward and back substitution quickly Author: Darren Engwirda Lee, Shelley

It's really faster. Unfortunately, it does
not support complex matrices.

05 May 2006 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda sundhararaju, prabhakaran

it's very usefull for chemical, mechanical and civil. to analysis critical domain. i wish to develop 3D domain also

30 Apr 2006 Fast sparse matrix vector product sparse matrix vector product Author: Darren Engwirda Beardmore, Robert

I had no problems using this file and it is around 5 times quicker than matlab's A*b for the problems I tried.

01 Apr 2006 Fast sparse matrix vector product sparse matrix vector product Author: Darren Engwirda Kvasnicka, Michal

The zip file is corrupted. The matrix.mat file can not be extracted.

29 Mar 2006 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda Asghari, Babak

21 Mar 2006 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda Zuor, Kong

This is what I have been looking for since I start using Matlab. Great job well done! I wish to see this code in the next Matlab release. I find this code very useful to those who solve CFD problems with matlab. The author deserve my five star ranking. I would encourage the author to advance this code for 3D case. I am free at last!
Many thanks

21 Mar 2006 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda Oswald, M.

Very good contribution. I wish the author could extend the tricontour function to handle 3D triangle meshes as well.

20 Mar 2006 Contours for triangular grids Generate smooth contours for functions defined on unstructured triangular grids Author: Darren Engwirda D'Errico, John

Very nice. This is a function that should have been in Matlab itself since the day they provided trisurf and trimesh. It handled some troublesome cases I tried when I tried to break it. I'll give it a 5 rating because it deserves that rating. My only wish is that it was even more compatible with the contour functionality of matlab. For example, no handles are returned, in case you wish to set a line color or style. It might also be nice to provide a way to label the contours via clabel.

19 Mar 2006 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda (us) Schwarz, Urs

QUOTE
The reason that cnect is defined on its own is so that the domain can be multiply connected (polygon with "islands").
QUOTE
please, note that i said at run-time, i still feel that you should make the third arg optional
us

17 Mar 2006 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda Engwirda (The author), Darren

The reason that cnect is defined on its own is so that the domain can be multiply connected (polygon with "islands").

If you assume that cnect can be built by taking consecutive nodes this is no longer possible.

Thanks though, I will update it to flag boundary points as us mentioned.

17 Mar 2006 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda D'Errico, John

While I prefer the edge list implementation this code uses as opposed to Matlab's polygon, it would be easy enough to generate the connectivity assuming consecutive points on the polygon as us points out.
Regardless, this code is indeed fast and nice.

17 Mar 2006 Fast points-in-polygon test Fast test to determine points located inside general polygon regions. Should be significantly faster Author: Darren Engwirda (us) Schwarz, Urs

very nice (and indeed fast) snippet with a good help section and economic implementation of the crossing number test
minor comments:
- the third arg CNECT should be computed automatically (if not defined at run-time) on the assumption that the user-defined points are connected consecutively; this behavior could/should be mentioned in the help section
- unfortunately, unlike INPOLYGON it does not (yet) distinguish between IN and ON the polygon
- the help section should give a pointer to INPOLYGON
us

 

MATLAB Central Terms of Use

NOTICE: Any content you submit to MATLAB Central, including personal information, is not subject to the protections which may be afforded information collected under other sections of The MathWorks, Inc. Web site. You are entirely responsible for all content that you upload, post, e-mail, transmit or otherwise make available via MATLAB Central. The MathWorks does not control the content posted by visitors to MATLAB Central and, does not guarantee the accuracy, integrity, or quality of such content. Under no circumstances will The MathWorks be liable in any way for any content not authored by The MathWorks, or any loss or damage of any kind incurred as a result of the use of any content posted, e-mailed, transmitted or otherwise made available via MATLAB Central. Read the complete Terms prior to use.

Contact us at files@mathworks.com