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

> <

[hidden email]> 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

______________________________________________

[hidden email] mailing list

https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide

http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.