Найти не возвращаемый индекс для данного значения в Matlab

При написании кода для самоорганизующейся нейронной сети карты я написал кодлет для определения евклидова расстояния между весом каждого нейрона и каждым входом обучения. Затем я использовал функцию Compet, чтобы сделать элемент с максимальным значением расстояния равным 1 и нулем покоя (разреженная матрица).

Другими словами, в каждой строке должен быть хотя бы один элемент, равный 1. Но когда я запустил цикл, чтобы найти индексы таких элементов в каждой строке, используя функцию поиска, я получил пустую матрицу. Вот выдержка из кода.

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 в нем не каждый ряд. В вашем коде вы извлекаете строки со строкой comp(i,:) и некоторые из этих строк не имеют никаких, так что find возвращается [], Вы должны обменять свои индексы на comp(:,i),

Я бы также перепроверил индексы, которые вы используете после этого для x_train чтобы убедиться, что вы их не перевернули.

Другие вопросы по тегам