Thanks a lot!
Precisely what I had in mind.
One last question (an extension of the previous one): can this be extended to points in 3D? Once again, given the distance matrix, can I reconstruct a set of coordinates (among many possible) for the points in three-dimensional space?
Cheers

Lorenzo

On 12/15/2011 07:22 PM, Peter Langfelder wrote:
On Thu, Dec 15, 2011 at 10:08 AM, Lorenzo Isella
<lorenzo.ise...@gmail.com>  wrote:
Dear All,
I am struggling with the following problem: I am given a NxN symmetric
matrix P ( P[i,i]=0, i=1...N and P[i,j]>0 for i!=j) which stands for the
relative distances of N points.
I would like use it to get the coordinates of the N points in a 2D plane. Of
course, the solution is not unique (given one solution, I can translate or
rotate all the points by the same amount and generate another solution), but
any correct solution will do for me.
Any idea about how I can achieve that? Is there any clustering package that
can help me?
Many thanks.

If your matrix really corresponds to distances of points (in 2
dimensions), you can try multidimensional scaling, function
cmdscale().

This little code illustrates that cmdscale recovers the 2-dimensional
points used to generate a distance matrix, up to a shift and rotation:

# Generate 10 random points in 2 dimensions
nPoints = 10;
nDim = 2;

set.seed(10);
points = matrix(runif(nPoints * nDim), nPoints, nDim);

# Their distance:
dst = dist(points)

# Classical multidimensional scaling
mds = cmdscale(dst);

# Distance of the points calculated by mds
dst2 = dist(mds);

# The two distances are equal
all.equal(as.vector(dst), as.vector(dst2))

HTH,

Peter

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to