我正在尝试创建N个数据点与其K个邻居之间的距离矩阵。数据矩阵是NxA
,因此距离矩阵Y_distances
是NxN
,并且每个i,jth
条目是数据点i
和j
之间的距离。使用knnsearch
,我有一个每个数据点及其K
邻居的行号矩阵,称为IDX
,然后我执行降维,并希望使用低维空间中相邻点之间的距离。我目前使用的for循环如下:
no_neighbours=k;
IDX = knnsearch(X,X,'K',no_neighbours);
Y_Distances = sqrt(dist2(y, y));
for i = 1:N
for j= 1:A
Y_neighbour_distances = Y_Distances(i,IDX(i,j));
end
end
关于如何避免这些循环的任何建议,因为它们在大型数据集上相当耗时。
您可能需要调用稀疏:
I = ndgrid(1:N, 1:K);
sparse(I, IDX, Y_Distances)