Code covered by the BSD License  

Highlights from
Toolbox Graph

4.35294

4.4 | 17 ratings Rate this file 136 Downloads (last 30 days) File Size: 2.87 MB File ID: #5355
image thumbnail

Toolbox Graph

by Gabriel Peyre

 

26 Jun 2004 (Updated 19 Jul 2009)

A toolbox to perform computations on graph.

| Watch this File

File Information
Description

Graph theory toolbox
Copyright (c) 2007 Gabriel Peyre

This toolbox contains useful functions to deal with graph and triangulation.

The basic representation of a graph of n vertices is the adjacency matrix A where A(i,j)=1 if vertex i is linked to vertex j. A graph often comes with a geometric realization in R^d which an (d,n) matrix where vertex(:,i) is the position of the ith vertex.

A triangulation of m faces and n vertex is represented through:
* a set of faces which is a (3,m) matrix where face(:,i) are the vertices indexes of the ith face.
* a set of vertex which is a (d,n) matrix.
The toolbox contains function to deal more easily with a triangulation data structure, and allows to retrieve vertex and face 1-ring and switch from adjacency to faces.

The graph part of the toolbox contains function to creates synthetic graph and compute shortest path (dijkstra and isomap algorithm).

This toolbox contains a lot of function to deal with spectral theory of triangulation. You can load triangulations from files and then display the resulting mesh. It allows to compute various laplacian operator, and the to compute parameterization using spectral decomposition, harmonic mapping, free boundary harmonic mapping, and isomap.

MATLAB release MATLAB 7 (R14)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (21)
10 Sep 2004 lolo@loli.li lo

Perfect

11 Dec 2004 Attila Altay Yavuz

Very useful

26 Mar 2005 Khaled Khairy  
29 Mar 2006 Edo urra

good

08 Sep 2006 Will Liu  
22 Feb 2007 Ben abdallah youssef

Very helpful toolbox!!

30 May 2007 bahram gh

very useful

02 Jun 2008 anup vibhute

very useful

03 Mar 2009 David S

Very useful, except for a bug in the compute_curvature function:

compute_curvature will generate an error on line 75 ("dp = sum( normal(:,E(:,1)) .* normal(:,E(:,2)), 1 );") for SOME surfaces. The error stems from E containing indices that are out of range which is caused by line 48 ("A = sparse(double(i),double(j),s,n,n);") where A's values eventually entirely make up the E matrix. The problem occurs when the i and j vectors create the same ordered pair twice in which case the sparse function adds the two s vector elements together for that matrix location resulting in a value that is too large to be used as an index on line 75. For example, if i = [1 1] and j = [2 2] and s = [3 4] then A(1,2) will equal 3 + 4 = 7.

The i and j vectors are created here:
i = [face(1,:) face(2,:) face(3,:)];
j = [face(2,:) face(3,:) face(1,:)];

The fact that your code seems to depend on the order of the vertices in the faces matrix worries me because the curvature should be the same regardless of the order, obviously. To be fair, I don't completely understand how your code works so perhaps the way it is written it works out to not matter except that it does certainly matter when it results in an index out of bounds error as previously described.

03 Mar 2009 David S

Just wanted to add that the error I mentioned is caused by the flipping of the sign of the surface normal of just one face by rearranging the order of the vertices in the face matrix

07 Apr 2009 Axel zheng

Cool!!!

20 May 2009 Ofra

Very useful.
Is there a Matlab 2008b version ?

09 Jun 2009 europe lee

test_diffusion_wavelet.m file did not work!
Because it miss some functions, such as MakeDiffusion function.
Although I download and install diffusion wavelet code from MAURO MAGGIONI, I find that MakeDiffusion in his code is different from yours,like parameter called 'gauss' in your MakeDiffusion was not included in Mauro's MakeDiffusion.

26 Aug 2009 YUANCHUN WANG

Very useful.

But I have a question: when I tried to use the function "perform_mesh_simplification" to make the simplificatino for mesh. Matlab said that QSlim is not a command. And here is the command where situates the problem: "system(['QSlim tmp.smf -o tmp1.smf -s ' num2str(nface)]);"

I'm afraid this is because the qslim.exe was missed?

thanks for your explaination!

18 Oct 2009 Raymond Cheng

Thanks for your sharing.

12 Nov 2009 kamel

Very useful
compute_curvature will generate an error on line 75 ("dp = sum( normal(:,E(:,1)) .* normal(:,E(:,2)), 1 );") for SOME surfaces.
what's the solution of this bug
thanks

17 Nov 2009 Peter  
20 Nov 2009 Ged Ridgway

Looks really useful. However, isomap seems to fail:
>> xy = isomap(dat);
??? Undefined command/function 'compute_nn_graph'.
Error in ==> isomap at 85
    D = compute_nn_graph(X,options);

28 Jul 2010 Julian Xue

is there a method here to just plot an adjacency matrix?

08 Jun 2011 wikimenWoko wikk  
30 Jun 2011 Eitan

Very useful tool.
I noticed that compute_curvature tries to enforce Cmin<=Cmax. In case of negative Cmax, it can cause abs(Cmin)>abs(Cmax), which I think is not right. IMHO these lines can be removed from the function.

Please login to add a comment or rating.
Updates
13 Jul 2004

Added dual graph support.

26 Oct 2004

Now in zip format.

11 Feb 2005

Added support for various file formats (VRML,PLY,SMF).
Added support for geometry images display (gim generation soon to come).
Added some test files for spectral graph drawing, isomap flattening, spectral graph compression.

18 Jan 2007

Added free boundary parameterization.

27 Apr 2007

GPL license.

02 Oct 2007

Added heat diffusion on meshes, clean definition of laplacians.

06 Nov 2007

Added curvature computation on meshes.

21 Nov 2007

Fixed a few bugs.

01 Feb 2008

Added support for tetrahedral meshes.

15 Feb 2008

Added image approximation using refinement.

18 Aug 2008

Added html help files.

22 Aug 2008

HTML files updated.

27 Jun 2009

Update of Licence

19 Jul 2009

Modified license.

Tag Activity for this File
Tag Applied By Date/Time
graph theory Gabriel Peyre 22 Oct 2008 07:25:09
laplacian Gabriel Peyre 22 Oct 2008 07:25:09
combinatorial Gabriel Peyre 22 Oct 2008 07:25:09
meshes Gabriel Peyre 22 Oct 2008 07:25:09
triangulation Gabriel Peyre 22 Oct 2008 07:25:09
graph theory Sebastian 26 Oct 2010 01:05:15
triangulation Muhammad Aurangzeb 13 Nov 2010 13:01:33
meshes Muhammad Aurangzeb 13 Nov 2010 13:01:38
laplacian Muhammad Aurangzeb 13 Nov 2010 13:01:41
graph theory Muhammad Aurangzeb 13 Nov 2010 13:01:44
combinatorial Muhammad Aurangzeb 13 Nov 2010 13:01:49
graph theory Lukas 08 Jun 2011 11:49:08
triangulation Yi Dong 03 Jan 2012 03:02:30

Contact us at files@mathworks.com