Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 移除循环:从包含所有实例之间距离的矩阵中提取相邻距离_Matlab_Nearest Neighbor - Fatal编程技术网

Matlab 移除循环:从包含所有实例之间距离的矩阵中提取相邻距离

Matlab 移除循环:从包含所有实例之间距离的矩阵中提取相邻距离,matlab,nearest-neighbor,Matlab,Nearest Neighbor,我试图在我的N个数据点和它们的K个邻居之间创建一个距离矩阵。数据矩阵是NxA,因此距离矩阵Y\u距离是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)); f

我试图在我的N个数据点和它们的K个邻居之间创建一个距离矩阵。数据矩阵是
NxA
,因此距离矩阵
Y\u距离
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

关于如何避免这些循环的任何建议,因为它们在大型数据集上非常耗时。

您可能需要调用sparse:

I = ndgrid(1:N, 1:K);
sparse(I, IDX, Y_Distances)

向我们展示涉及
knnsearch
的代码,以及该代码如何插入到列出的代码中?