Ich habe den folgenden Fall:schnelle Berechnung der quadratischen Form in Matlab
Y(i) - m x 1 vecotr , i = 1,...,N
A(i) - m x m symmetric matrix , i = 1,...,N
H(i,j) = 0.5*(Y(i)-Y(j))'(A(i)^-1+A(j)^-1)(Y(i)-Y(j)) |i,j = 1,...,N
Derzeit I das Inverse von A (i) separat berechnet und H mit zwei 'für' Schleifen:
for i= 1:N
A_inv(:,:,i) = inv(A(:,:,i));
end
H= zeros(N,N);
for j=1:N
for i=(j+1):N
x = Y(:,1,j)-Y(:,1,i);
H(j,i) = 0.5*(x'*(A_inv(:,:,i)+A_inv(:,:,j))*x);
H(i,j) = H(j,i);
end
end
Ich habe keinen Weg gefunden, den Code zu optimieren, die Antworten, die ich in den Foren gesehen habe, betreffen Fälle, in denen A konstant ist und nicht von den Indizes abhängt. Gibt es eine effizientere Möglichkeit, es zu berechnen?