使用八度或matlab中的sum运算来矢量化代码

时间:2014-07-07 00:16:44

标签: matlab octave vectorization

如何对以下代码进行矢量化? 编辑:theta,y是列向量; X是矩阵; alpha,m是标量。

   temp1 = theta(1) - alpha/m * sum((X*theta-y).*X(:,1));
   temp2 = theta(2) - alpha/m * sum((X*theta-y).*X(:,2));
   theta(1) = temp1;
   theta(2) = temp2;

我尝试了以下操作,但总和操作不能达到我想要的效果......

   temp = alpha/m*sum(bsxfun(@times, (X*theta-y), X))
   theta = bsxfun(@minus, theta, temp)

1 个答案:

答案 0 :(得分:1)

你需要一个矩阵乘法来对其进行矢量化。

大概:

theta = theta - alpha/m*(X'*((X*theta)-y))