Я пытаюсь вернуть среднее значение ненулевых элементов в каждом столбце в моей матрице;Средство ненулевых элементов - почему эти две попытки возвращают разные результаты?
моя первая попытка была:
i = 1:peopleCount;
nonZero1(i,:) = mean(nonzeros(Y(:,i)));
, который возвращает тот же результат для всех столбцов, в то время как второй попытки:
for i = 1:peopleCount;
nonZero2(i) = mean(nonzeros(Y(:,i)));
end
возвращает правильный ответ.
Они выглядят идентичными мне, но, очевидно, это не так.
- Что пошло не так с моей первой попытки?
- Как я могу сделать первую версию работы?
Почему бы просто не использовать noZero = mean (nonzeros (Y)) '? ['mean'] (http://www.mathworks.de/help/matlab/ref/mean.html) автоматически вычисляет средства для каждого столбца, если аргумент является матрицей. – Lumen
'nonzeros (Y)' будет возвращать все ненулевые элементы в матрице, но потеряет информацию о том, из какого столбца выходил каждый элемент (длинный вектор будет на нулях) – jajdoo
У вас есть 'for' в первой попытке? Вы не можете ожидать 'nonzeros (Y (:, i))' для возврата матрицы с переменным размером. – Rashid