MATLAB: Replacing a for loop with matrix multiplication

for loopMATLABmatrixmatrix manipulation

In the problem I have here, x is a 2×300 matrix and SIG is a 2×2 matrix.
What I'm looking for is a 1×300 vector, where the ith entry corresponds to x(:,i)'*inv(SIG)*x(:,i). I've written this out in a for loop below:
ans = zeros(1,size(x,2));
for i = 1:size(x,2)
ans(i) = x(:,i)'*inv(SIG)*x(:,i);
end
but I think there must be a way to make this more efficient with some sort of matrix multiplication–I just can't figure it out.
Any help appreciated!

Best Answer

result = sum(x.*(inv(SIG)*x));
or
result = sum(x.*(SIG\x));