错误:Matrix维度必须一致(Matlab)

时间:2016-06-17 10:32:12

标签: matlab matrix

代码的一部分(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>

1 个答案:

答案 0 :(得分:1)

如果X, y和theta是维度15 * 1的列向量,则等式的正确实现应该是第一个,它不应该给你任何错误[我用随机{{1}检查}列向量,它工作正常]。

第二个代码基本上没有实现你的等式,因为你正在做的是:15*1 [相当于theta' * X],从标量和中减去y得到{{1并且再次总结sum(theta.*X)的平方。我建议您重新检查hxhxtheta的维度。从您上传的代码中,theta为X。所以,既然你也说你没有在第二个代码中收到任何错误,那么y可能是14*1矩阵,而X14*N行向量。在这种情况下,您应该知道如何处理等式,显然您不能使用第一个实现。然而第二种实施是错误的。