如何对二次型(x'*A*x)的评估进行矢量化?

Meh*_*dad 4 matlab matrix vectorization

如果我有一个矩阵A并且我想评估x' * A * x多个值x,我该如何对其进行矢量化?

(我可以做X' * A * X并采取对角线,但这显然效率低下.)

小智 8

考虑它的一种方法是你试图在矢量X和矢量之间采取一堆点积AX.Matlab有一个功能:

N = 10; % number of x's
M = 100; % length of x's
X = rand(M,N);
A = rand(M, M);

% way 1
way1 = diag(X' * A * X);

% way 2
way2 = dot(X, A*X)';

% compare
[way1 way2]
Run Code Online (Sandbox Code Playgroud)