MATLAB: Replacing for loop of sum for something better, something like symsum, but for indexing of matrix

expression matrix sum

X = [1;2;3];
X = [ones(size(X, 1), 1), X];
y = [15;20;30];
theta = [5;5];
X = transpose(X);
for n = 1:1:size(X,2)
suma = suma + ((transpose(theta)*X(:,n)-y(n))*X(:,n));
end

Best Answer

Summary:
X = [1;2;3];
X = [ones(size(X, 1), 1), X];
y = [15;20;30];
theta = [5;5].'; % transpose it once only
X = transpose(X);
suma = 0;
for n = 1:1:size(X,2)
suma = suma + ((theta * X(:,n) - y(n)) * X(:,n));
end
Is [-20; -45] the wanted output? Then perhaps you want:
suma = X * (theta * X - y.').';