Более быстрые вычисления в стиле прогнозируемой нормы (квадратичная форма, метрическая матрица ...)
Мне нужно выполнить много оценок формы
X(:,i)' * A * X(:,i) i = 1...n
где X (:, i) - вектор, а A - симметричная матрица. Якобы я могу сделать это в цикле
for i=1:n
z(i) = X(:,i)' * A * X(:,i)
end
который медленный, или векторизовать его как
z = diag(X' * A * X)
который недопустимо тратит оперативную память, когда X имеет много столбцов. В настоящее время я иду на компромисс
Y = A * X
for i=1:n
z(i) = Y(:,i)' * X(:,i)
end
который немного быстрее / легче, но все еще кажется неудовлетворительным.
Я надеялся, что может быть какая-то идиома или трюк с матлабом / scilab для достижения этого результата более эффективно?