[問題]很玄的數值問題已回收

看板MATLAB作者 (準備好了嗎)時間15年前 (2010/10/24 00:13), 編輯推噓3(301)
留言4則, 2人參與, 最新討論串1/2 (看更多)
最近小弟在進行實驗時,需要將矩陣內的元素作加總,使得總和為1, 元素內容皆為0~1之間,但是在過程中,因為計算機的計算誤差,所以 會出現總和不等於1的情況產生,所以在此便先將矩陣內的最大值的位 置先清為0,再用1減去矩陣內的其他總和,程式碼如下: [C,I] = max(a(i,j,:)); a(i,j,I) = 0; a(i,j,I) = 1 - sum(a(i,j,:)); 這個時候就玄了,我在結果產生時做了sum(a(i,j,:)) 結果秀出ans = 1.0000 所以我進到work space監看數值 0 0 1.266416554909401e-014 0 0 0.9999997168235 0.000000283717638 0 上面共八筆資料,最大值出現在第六筆 所以應該會先清為0,變成 0 0 1.266416554909401e-014 0 0 0 0.000000283717638 0 此時我在command window進行 b = 1-sum(a(i,j,:)) 再進行c = b + sum(a(i,j,:)) 結果會等於1 但是當我把b的結果放回a矩陣內,再執行sum(a(i,j,:)) 此時結果就等於1.0000 想請教板上的各位,這是什麼原因造成的?! 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.224.84.59

10/24 11:46, , 1F
可以貼code嗎? 比較方便看=v=
10/24 11:46, 1F

10/24 11:46, , 2F
可以直接丟去跑那種
10/24 11:46, 2F

10/24 12:22, , 3F
b丟回a去,不是1該是什麼?
10/24 12:22, 3F

10/24 16:27, , 4F
講得不太清楚,沒看到有問題的地方。我也覺得正常
10/24 16:27, 4F
文章代碼(AID): #1CmmcTt6 (MATLAB)
文章代碼(AID): #1CmmcTt6 (MATLAB)