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 - Fatal编程技术网

如何利用指数矩阵从数据集中生成最近邻矩阵-matlab

如何利用指数矩阵从数据集中生成最近邻矩阵-matlab,matlab,Matlab,我有一个数据点的Nx2矩阵,其中每一行都是一个数据点。我还有一个NxK矩阵,它是K最近邻的索引,来自knnsearch函数。我试图创建一个矩阵,在每一行中包含数据点,然后是K个相邻数据点,即对于K=2,我们将为每一行创建类似[data1,neighbour1,neighbour2] 我一直在搞循环,试图用矩阵索引,但没有用,每个数据点都是1x2这一事实让我困惑。 我的最终目标是计算梯度,以类似的方式训练RBF网络: D = (x_dist - y_dist)./(y_dist+(y_dist==

我有一个数据点的
Nx2
矩阵,其中每一行都是一个数据点。我还有一个
NxK
矩阵,它是
K
最近邻的索引,来自
knnsearch
函数。我试图创建一个矩阵,在每一行中包含数据点,然后是K个相邻数据点,即对于
K=2
,我们将为每一行创建类似
[data1,neighbour1,neighbour2]

我一直在搞循环,试图用矩阵索引,但没有用,每个数据点都是
1x2
这一事实让我困惑。 我的最终目标是计算梯度,以类似的方式训练RBF网络:

D = (x_dist - y_dist)./(y_dist+(y_dist==0));
temp = y';
neg_gradient = -2.*sum(kron(D, ones(1,2)) .* ...
    (repmat(y, 1, ndata) - repmat((temp(:))', ndata, 1)), 1);
neg_gradient = (reshape(neg_gradient, net.nout, ndata))';

您可以使用以下内容:

K = 2;
nearest = knnsearch(data, data, 'K', K+1);%// Gets point itself and K nearest ones
mat = reshape(data(nearest.',:).',[],N).'; %// Extracts the coordinates
我们生成
数据(最近的',:)
以获得
3*N×2
矩阵,其中每3个连续行是相互对应的点。我们将其转置,以将xy坐标移到同一列中。(MATLAB是列主键,即列中的值连续存储)。然后我们重塑数据,使每一列都包含最近的
行的xy坐标。因此,我们最终只需要再次转置