Suppose I have a matrix x of size `m x p`

, and another matrix y of size `m x p`

, how to compute the pdist2(in matlab) of

the two matrices, which gives me a matrix ``` m x m `` , each element d_ij = dist(x_i, y_j), where x_i and y_j is the coresponding row vecor. can any one give some elegant solution?

```
mp1 = torch.rand(m,p)
mp2 = torch.rand(m,p)
mmp1 = torch.stack([mp1]*m)
mmp2 = torch.stack([mp2]*m).transpose(0,1)
mm = torch.sum((mmp1-mmp2)**2,2).squeeze()
```

Then mm is the m*m matrix you want, with mm_ij = d(mp1_i, mp2_j)

4 Likes

Very elegant solution. Thank you very much.

1 Like