2016-12-06 107 views
1

在为自组织映射神经网络编写代码时,我编写了用于查找每个神经元权重与每个训练输入之间的欧氏距离的小码。然后我用竞争函数使得元素的最大距离值为1,并且为零(稀疏矩阵)。在Matlab中查找未返回给定值的索引

换句话说,每行必须至少有一个元素为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; 

回答

1

功能compet将返回其中每个保证具有在其中的1,而不是每个行的0和1的矩阵。在您的代码中,您正在提取行与行comp(i,:),并且其中一些行没有任何行,所以find返回[]。您需要将您的索引换成comp(:,i)

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