在为自组织地图神经网络编写代码时,我编写了用于查找每个神经元权重与每个训练输入之间的欧氏距离的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;
答案 0 :(得分:1)
函数compet
将返回一个零和一的矩阵,其中每个列保证其中包含1
,而不是每行。在您的代码中,您使用行comp(i,:)
提取行,其中一些行没有任何行,因此find
会返回[]
。您需要将索引交换为comp(:,i)
。
我还会仔细检查您在x_train
之后使用的索引,以确保您没有将它们翻转过来。