[討論] 程式不能繼續往迴圈執行下去?已回收

看板MATLAB作者 (白開水)時間15年前 (2010/11/09 14:47), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
一直找不到錯誤,請前輩開示點出問題,感謝 程式上半部都可以執行,但是等到要進while迴圈時就下不去 檢查的時候發現迴圈下第一個變數 d5 就沒有顯示在工作欄右邊是視窗中 程式條件是上半部y = 0.386 然後進入y< 0.1的迴圈(我希望是越接近於0越好) 最後 n 則是告訴我自從進到迴圈後總共跑了幾次 x1 = -1; % 連結值 x2 = -1; w13 = 1; w23 = -1; w14 = -1; w24 = 1; w35 = 1; w45 = 1; o3 = 1; % 閥值 o4 = 1; o5 = 1; ln = 10; %學習函數 t = 1; n = 0; % 最初求輸出y值程式,希望是等於0 net3 = (w13*x1)+(w23*x2)-o3; net4 = (w14*x1)+(w24*x2)-o4; h1 = 1/(1+exp(-net3)); h2 = 1/(1+exp(-net4)); net5 = (w35*h1)+(w45*h2)-o5; y = 1/(1+exp(-net5)); %如果不是等於0(小數也要接近),就啟動以下程式做連結值更動 while y < 0.1 d5 = y*(1-y)*(t-y); d3 = h1*(1-h1)*(w35*d5); d4 = h2*(1-h2)*(w45*d5); neww35 = ln*d5*h1; neww13 = ln*d3*x1; neww23 = ln*d3*x2; newo5 = -ln*d5; newo4 = -ln*d4; newo3 = -ln*d3; neww14 = ln*d4*x1; neww24 = ln*d4*x2; % 更正後的權值(連結值) 和 閥值 w35 = w35 + neww35; w45 = w45 + neww45; w13 = w13 + neww13; w23 = w23 + neww23; w14 = w14 + neww14; w24 = w24 + neww24; o5 = o5 + newo5; o4 = o4 + newo4; o3 = o3 + newo3; % 使用更正值後重新跑原始檔案 net3 = (w13*x1)+(w23*x2)-o3; net4 = (w14*x1)+(w24*x2)-o4; h1 = 1/(1+exp(-net3)); h2 = 1/(1+exp(-net4)); net5 = (w35*h1)+(w45*h2)-o5; y = 1/(1+exp(-net5)); n = n+1; end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.96.47.236
文章代碼(AID): #1CsEvqlX (MATLAB)
文章代碼(AID): #1CsEvqlX (MATLAB)