对于相同类型的代码,Matlab输出不同

时间:2016-03-04 23:06:16

标签: arrays matlab

我必须在matlab中进行类似的计算,但给出不同的结束值。

在第一个代码中,我有gaven数组''theta''和初始值,下面的代码作为

for i=1:m
    for j=1:n
        sum=sum + (theta'*X(j,:)' - y(j))*X(j,i);
    end
    theta(i)=(theta(i)-(alpha*sum)/m);
    sum=0;
end
  

以上代码的输出为340403.617738,109912.678489,-5931.109115


在第二个代码中,我有gaven数组''theta''和初始值,但我初始化''theta_b''等于''theta''另一个数组,我所做的所有更改都是数组''theta_b''并在结束时我将“theta_b”的价值指定为“theta”。

theta_b=theta;
for i=1:m
    for j=1:n
        sum=sum + (theta'*X(j,:)' - y(j))*X(j,i);
    end
    theta_b(i)=(theta(i)-(alpha*sum)/m);
    sum=0;
end
theta=theta_b;
  

以上代码的输出为340403.617738,110014.524234,-6046.767912


因为上面的两个代码都是一样的,所以为什么输出是不同的。 由于

1 个答案:

答案 0 :(得分:1)

在第一个循环中,您将更新theta(i)的值并使用更新的值计算总和。在第二个循环中,您在开头制作theta的副本,并在整个过程中使用它来计算总和。新的更改将保存到theta_b(i)中,而不是用于计算总和。