错误:矩阵尺寸必须一致(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

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