0
我必須在matlab中循環做類似的計算,但給出不同的結束值。
在第一代碼我有gaven陣列 '' THETA '' 與初始值和下面的代碼可以作爲Matlab輸出對於相同類型的代碼不同
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''的值指定給't'赫塔'。
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
因爲兩個以上的代碼shouls工作方式相同,爲什麼輸出是不同的。 由於
不要使用'sum'作爲變量名,那麼你會如何總結'theta'中的值? 'sum(theta)'將成爲baaad。另外:在第二種情況下,你在循環中繼續使用'theta'的舊值。在第一種情況下,你正在逐漸改變'theta'的元素,你在後面的迭代中重用它。這就是爲什麼兩個代碼中的第一個輸出是相同的。 –