错误:矩阵尺寸必须一致(Matlab)
代码的一部分(matlab)就是我得到这个错误的地方 矩阵维数必须一致 下面是两个相同逻辑的实现,但第一个不起作用。第一个的问题是什么?谁都看得出来 首次实施错误:矩阵尺寸必须一致(Matlab),matlab,matrix,Matlab,Matrix,代码的一部分(matlab)就是我得到这个错误的地方 矩阵维数必须一致 下面是两个相同逻辑的实现,但第一个不起作用。第一个的问题是什么?谁都看得出来 首次实施 f = 1/2 * (sum((theta .* X) - y).^2); 二次实施 hx = (theta' * X - y); f = sum(hx.^2) * .5; 上面的X,y,θ是维度15*1的列向量,这些代码是 $J(\theta)=\frac{1}{2}\sum\limits{i}(\theta^T x^{(i)}-y
f = 1/2 * (sum((theta .* X) - y).^2);
二次实施
hx = (theta' * X - y);
f = sum(hx.^2) * .5;
上面的X,y,θ
是维度15*1
的列向量,这些代码是
$J(\theta)=\frac{1}{2}\sum\limits{i}(\theta^T x^{(i)}-y^{(i)})^2$如果
x,y
和theta是维度15*1
的列向量,则方程的正确实现应该是第一个,并且不会给您任何错误[我用随机15*1
列向量检查,它工作得很好]
第二个代码基本上没有实现你的方程,因为你正在做的是:
theta'*X
[这相当于sum(theta.*X)
],从标量和中减去y得到hx
,然后再次求出hx
的平方。我建议您重新检查theta
、X
和y
的尺寸。根据您上传的代码,θ为14*1
。因此,既然您还说第二个代码中没有任何错误,那么可能X
是14*N
矩阵,y
是1*N
行向量。在这种情况下,您应该知道如何处理该等式,显然您不能使用第一个实现。然而,第二种实现是错误的 如果没有θ、X和y的维数,这个问题就无法回答。它们使用不同的运算,*
vs*
如果它们都是15
-by-1
那么你不可能得到一个矩阵维度,必须与你的第一个实现一致错误。你的第二个不起作用或者第一个方法?你的θ和X维度不匹配。我明白了,第二个是正确的实现。这里θ=14*1,X=14*400,y=1*400