计算彼此之间的距离不超过某个常数的点的指数矩阵

时间:2018-03-14 18:47:18

标签: matlab matrix octave distance

考虑大小为nxn的方阵D,它表示n个点之间的成对距离,即D(1,2)是点1和2之间的距离,或者,  通常,D(i,j)是点i和j之间的距离。

我想计算m个点的索引(i,j)的大小为mx2的另一个矩阵L,其彼此之间的距离不超过某个常数w。

例如,给定D

octave:1> D = [1 2 3; 4 5 6; 7 8 9]
D =

   1   2   3
   4   5   6
   7   8   9

对于w = 4,我想在L中得到距离不超过w = 4的点的索引(i,j)

octave:2> L = [1 2; 2 2; 3 2; 1 3; 2 3; 3 3]
L =

   1   2
   2   2
   3   2
   1   3
   2   3
   3   3

作为第一个近似,我相当天真地做了这个

D(D > w) = 0;

L = [];
for i = 1:size(D,1)
  for j = 1:size(D,2)
    if D(i, j) != 0
      L = [L; i j];
    end
  end
end

是否有更快(强调更快)或更简单的方法来做到这一点?我对MATLAB不太熟悉。

1 个答案:

答案 0 :(得分:2)

使用find

D = [1 2 3; 4 5 6; 7 8 9];
w = 4;
[I, J] = find(D <= w);
L = [I J];