Re: [討論] 同算試 在function跟main算出來的不一樣

看板MATLAB作者 (天)時間9年前 (2016/06/12 18:08), 9年前編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《andysleep (Maydayisgod)》之銘言: : 大家好! 小弟遇到一個很奇怪的問題 : 這是main : clear all : theta=[14.154989916158062;0.539122655828177]; : X=[-15.9367581337854;-29.1529792172381;36.1895486266625]; : y=[2.13431050672967;1.17325667875646;34.3591091805390]; : m = length(y); : for i=1:m : error_train1(i) = 1/(2*m)*sum(([ones(i , 1) X(1:i, :)]*theta-y(1:i)).^2) 這裡的m是y的長度是m,以你例子來說,就是3。 : error_train(i) = CostFunction([ones(i , 1) X(1:i, :)],y(1:i),theta) 每一次input的Y,長度都會改變 所以子函數裡面的m等於i,因此,答案會不一樣 : end : 這是function : function J=CostFunction(X,Y,theta) : m=length(Y); : J=0; : J=1/(2*m)*(sum((X*theta-Y).^2)); : end 這裡的m是Y的長度,所以是i : 算出來的答案竟然不一樣 : error_train1 = : 1.9595 3.2064 3.2866 : error_train = : 5.8784 4.8097 3.2866 : 請問是哪裡出錯了 看了一整天還是看不出來 麻煩幫忙解答 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.76.63.212 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1465726139.A.353.html

06/12 18:27, , 1F
太感謝了 竟然沒看出來
06/12 18:27, 1F

06/12 21:06, , 2F
啊,沒看到c大解決了
06/12 21:06, 2F
大多都推文拉XD 沒有想動手回文的衝動QQ ※ 編輯: celestialgod (211.76.63.212), 06/12/2016 22:31:24
文章代碼(AID): #1NNJIxDJ (MATLAB)
文章代碼(AID): #1NNJIxDJ (MATLAB)