代码的一部分(matlab),我在哪里收到此错误
Matrix维度必须同意
下面是两个相同逻辑的实现,但第一个不起作用。第一个问题可以告诉任何人
首次实施
f = 1/2 * (sum((theta .* X) - y).^2);
第二次实施
hx = (theta' * X - y);
f = sum(hx.^2) * .5;
以上X, y, theta
是维度15 * 1
的列向量,代码是
$ J(\ theta)= \ frac {1} {2} \ sum \ limits {i}(\ theta ^ T x ^ {(i)} - y ^ {(i)})^ 2 $ < / p>
答案 0 :(得分:1)
如果X, y
和theta是维度15 * 1
的列向量,则等式的正确实现应该是第一个,它不应该给你任何错误[我用随机{{1}检查}列向量,它工作正常]。
第二个代码基本上没有实现你的等式,因为你正在做的是:15*1
[相当于theta' * X
],从标量和中减去y得到{{1并且再次总结sum(theta.*X)
的平方。我建议您重新检查hx
,hx
和theta
的维度。从您上传的代码中,theta为X
。所以,既然你也说你没有在第二个代码中收到任何错误,那么y
可能是14*1
矩阵,而X
是14*N
行向量。在这种情况下,您应该知道如何处理等式,显然您不能使用第一个实现。然而第二种实施是错误的。