Schnellere Berechnungen des projizierten Normstils (quadratische Form, metrische Matrix…)

Ich muss viele Auswertungen des Formulars durchführen

X(:,i)' * A * X(:,i)   i = 1...n

wobei X (:, i) ein Vektor und A eine symmetrische Matrix ist. Angeblich kann ich das entweder in einer Schleife machen

for i=1:n
    z(i) = X(:,i)' * A * X(:,i)
end

was langsam ist, oder vektorisiere es als

z = diag(X' * A * X)

Welche RAM inakzeptabel verschwendet, wenn X viele Spalten hat. Derzeit mache ich Kompromisse bei

Y = A * X
for i=1:n
    z(i) = Y(:,i)' * X(:,i)
end

was ist ein bisschen schneller / leichter aber scheint immer noch unbefriedigend.

Ich hatte gehofft, es gäbe ein Matlab / Scilab-Idiom oder einen Trick, um dieses Ergebnis effizienter zu erzielen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage