TABLE_MERGE
Merge Duplicate or Nearby Points.


TABLE_MERGE is a MATLAB program which can be used to remove duplicate points from a file, or to merge points that are very close.

Initially, each point is in its own cluster. If two clusters are separated by a distance of less than the tolerance, then they are replaced by one cluster, whose representative point is the weighted sum of the two cluster representatives.

The clusters are repeatedly processed until all clusters are separated by a distance of at least the tolerance.

This algorithm may be useful when a dataset containing a number of points is given, and

Note that this procedure depends on the ordering of the points. If you have three points A < B < C separated by slightly less than the tolerance, then A and B will be merged or B and C will be merged, depending on the labels of the nodes. Thus this process is not a strictly geometric procedure.

Secondly, it should be obvious that the procedure may return points that were not input points, because of the use of centroids.

Third, this procedure does guarantee that the output points are separated by more than TOLERANCE units of distance.

Usage:

table_merge ( 'table_file', tolerance )
reads the points in table_file, removes duplicates, replaces points that are within tolerance of each other by a centroid, and writes out the revised file.

Licensing:

The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.

Languages:

TABLE_MERGE is available in a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

POINT_MERGE, a MATLAB library which considers N points in M dimensional space, and counts or indexes the unique or "tolerably unique" items.

TABLE, a file format which is used for the input to this program.

TABLE_BARPLOT_PPMA, a FORTRAN90 program which reads a table file and creates an ASCII Portable Pixel Map (PPM) bargraph of the data.

TABLE_BORDER, a FORTRAN90 program which adds a border (of zero values) to a table file.

TABLE_COLUMNS, a FORTRAN90 program which extracts specific columns of data from a table file.

TABLE_COLUMNS_PERMUTE, a FORTRAN90 program which permutes the columns of a table file.

TABLE_DELAUNAY, a FORTRAN90 program which computes the Delaunay triangulation of a set of points.

TABLE_HISTOGRAM, a FORTRAN90 program which makes a histogram of a set of points stored in a table file.

TABLE_IO, a FORTRAN90 library which supplies the routines used to read the TABLE file.

TABLE_LATINIZE, a MATLAB program which reads a file of points and creates a "latinized" version by adjusting the data.

TABLE_ORTHONORMALIZE, a FORTRAN90 program which reads a file of points and orthonormalizes the columns.

TABLE_QUALITY, a MATLAB program which reads a file of points and computes the quality of dispersion.

TABLE_READ, a MATLAB program which reads a TABLE file.

TABLE_RECORD_MATCH, a FORTRAN90 program which finds close records in a table file.

TABLE_SCALE, a FORTRAN90 program which multiplies the entries of a table file by a scale vector.

TABLE_SHIFT, a FORTRAN90 program which shifts the entries of a table file by a shift vector.

TABLE_STATS, a FORTRAN90 program which reads a table file and computes certain statistics.

TABLE_TET_MESH, a FORTRAN90 program which reads a table file of 3D data, and computes a tetrahedral mesh.

TABLE_TOP, a FORTRAN90 program which reads a table file of M-dimensional data and makes a table of plots of all pairs of coordinates.

TABLE_UNBORDER, a FORTRAN90 program which removes the border from a table file.

TABLE_UNIFORM_NOISE, a FORTRAN90 program which adds a uniform noise term to the data in a table file.

TABLE_VORONOI, a FORTRAN90 program which computes information about the Voronoi diagram of the points.

Source Code:

Examples and Tests:

UNIFORM_02_00100 is a set of 100 "random" points in the unit square.

UNIFORM_02_00100.0.05 merges points closer than 0.05 units, resulting in 70 points.

UNIFORM_02_00100.0.10 merges points closer than 0.10 units, resulting in 34 points.

UNIFORM_02_00100.0.20 merges points closer than 0.20 units, resulting in 12 points.

You can go up one level to the MATLAB source codes.


Last revised on 12 August 2009.