[問題]很玄的數值問題已回收
最近小弟在進行實驗時,需要將矩陣內的元素作加總,使得總和為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
10/24 11:46, 1F
→
10/24 11:46, , 2F
10/24 11:46, 2F
推
10/24 12:22, , 3F
10/24 12:22, 3F
推
10/24 16:27, , 4F
10/24 16:27, 4F
討論串 (同標題文章)