1

在为自组织映射神经网络编写代码时,我编写了用于查找每个神经元权重和每个训练输入之间的欧几里德距离的 codelet。然后我使用竞争函数使最大距离值为 1 并保持为零(稀疏矩阵)的元素。

换句话说,每一行必须至少有一个元素为 1。但是当我运行一个循环以使用 find 函数在每一行中查找此类元素的索引时,我得到了一个空矩阵。这是代码摘录。

euc=negdist(cluster,x_train);
comp=compet(euc);
for i=1:10
ind=find(comp(i,:)==1);
m=mean(x_train(:,ind),2);
label(ind)=i;
4

1 回答 1

1

该函数compet将返回一个由 0 和 1 组成的矩阵,其中保证每一都有一个1,而不是每一行。在您的代码中,您使用 line提取comp(i,:),其中一些行没有任何行,因此find返回[]。您需要将索引交换为comp(:,i).

我还会仔细检查您之后使用的索引,x_train以确保您也没有让它们翻转。

于 2016-12-06T18:52:51.833 回答