Я должен выполнить обновление матрицы на M = M + c*a*a'
много раз, где c
является константой и a является вектором столбца. Если размер матрицы больше 1000, это простое обновление будет стоить большую часть времени моей функции, как правило, более 1 минуты, подсчитывается profile
.Эффективно выполнять элементное умножение векторов?
Основные коды:
for i = 1:N
_do something..._
for k = 1:n
a(1:k) = M(1:k,1:k)*p(1:k);
M(1:k,1:k) = M(1:k,1:k)+c*a(1:k)*a(1:k)';
M(1:k, k+1) = b(1:k);
M(k+1, 1:k) = b(1:k)';
M(k+1, k+1) = x;
......
end
end
Я все переменные выделяется заранее, векторы-столбцы р и б известны, и x
еще одна постоянная.
Поскольку у меня есть большое количество данных для обработки этой функцией, существует ли более эффективная альтернатива этому обновлению матрицы?
пожалуйста разместим ваш оригинал, но упрощенный (!) Код. – thewaywewalk
@thewaywewalk Спасибо, отредактировал мой вопрос. – Elkan
Чувствуется [** XY-проблема **] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - вы должны пересмотреть свой вопрос. Как бы то ни было, петля кажется вашим лучшим вариантом. – thewaywewalk