我知道这个问题已经被问过多次,但这个答案对我不起作用。我想像这样计算总和
其中 h(x) = X*theta
,theta
是 n
x1 矩阵,X
是m
xn
矩阵。我尝试这样写:
f = @(z)(sum(X(z,:)*theta) - y(z))^2;
v = sum(f([1:m])); % m is length of y
但它给了我这个错误:
error: for x^A, A must be a square matrix. Use .^ for elementwise power.
error: called from
computeCost>@<anonymous> at line 26 column 35
computeCost at line 27 column 4
ex1 at line 63 column 3
我的等效 for 循环版本如下:
v = 0;
for i = 1:m
v = v + (sum(X(i,:)*theta) - y(i))^2;
end
请告诉我如何矢量化这个循环。
最佳答案
这段代码:
v = 0;
for i = 1:m
v = v + (sum(X(i,:)*theta) - y(i))^2;
end
与此代码相同:
v = 0;
for i = 1:m
v = v + (X(i,:)*theta - y(i))^2;
end
(提示:X(i,:)*theta
是一个点积,并返回一个标量)。
要对其进行向量化,只需对结果求和即可:
v = (X*theta - y).^2;
v = sum(v);
假设y
是一个列矩阵(m
x1
)。请注意,如您的错误消息所示,我使用了 .^
。这是每个元素的幂,而不是矩阵幂^
。
关于matrix - 如何计算向量之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51089976/