Я пытаюсь улучшить производительность моего кода, преобразовывая некоторые итерации в матричные операции в Matlab. Один из них - следующий код, и мне нужно выяснить, как я могу избежать использования цикла в операции.Векторизация арифметических операций
Здесь gamma_ic & Лук - это двумерные матрицы. c & z - переменные, заданные из внешних итераций.
for z=1:maxNumber,
for c=1:K,
n = 0;
for y2=1:number_documents,
n = n+(gamma_ic(y2,c)*bow(y2,z));
end
mu(z,c) = n/2.3;
end
end
Цените свою помощь.
Редактировать. Добавлен цикл для c и z. Итерация продолжается до максимальных индексов в гамма-диапазоне & лук. Добавлена mu, которая является еще одной двумерной матрицей, чтобы показать использование n.
ли '' c' и z' перебора всех возможных индексов для '' gamma_ic' и bow' соответственно? Я думаю, что стоит показать, как они повторяются, и как вы используете 'n'. Также любые мысли или понимание, которые у вас есть о векторизации (это может быть легко или сложно для векторизации вашего кода, но было бы хорошо понять, что блокирует вас и попытаться исправить это) –
Если вы делитесь кодами цикла для 'c' и 'z', мы могли бы также помочь избавиться от этих циклов. Но для данного кода вы можете попробовать - 'n = sum (gamma_ic (1: number_documents, c). * Bow (1: number_documents, z))' – Divakar
Я обновил код с соответствующими частями внешних циклов. –