[.NET] 浮點數變成1.#QNAN的樣子了
請輸入專案類型(網站專案或者應用程式專案):應用程式專案
這是延續我之前問的那幾個問題的程式
我有用VB來算矩陣的加減乘法運算(後來做的,是不可或缺的部分)
不曉得有沒有人看過我在Ask版也問過的,關於Kalman濾波器
我在做的就是這個東西
到頭來我還是不瞭解原理,只能照著給我的規格流程來做
我做的這個東西分成兩個部分
一部分是模擬系統,一部分是參數預測(這部分就是Kalman濾波器負責的)
先丟一組預設的參數給模擬系統
模擬系統模擬完後的狀態丟給Kalman
Kalman進行運算後得到新的參數再丟給模擬系統來做模擬
模擬系統的部分我大致完成了
但是產生新的參數時
大概在第60幾次左右會使得參數矩陣變成1.#QNAN這個值(型態是Double)
然後就會發生錯誤,因為這個值不能拿來運算
(但是很奇怪,產生這個數時卻沒有告訴我有錯誤)
我搜尋了一下都沒看到什麼可用的說明
只大概知道這是表示「浮點數的小數部分非實數」或是類似得概念
但是我覺得很奇怪
這個Kalman的運算中,只有乘法,加法,和減法的運算(雖然是矩陣的)
不管怎麼說,非實數這種東西不是要負數開根號才會出現嗎?
我的運算中,矩陣的內容完全沒有任何地方有開根號
那請問怎麼會出現這種錯誤呢?
我偵錯功力不夠好
對於這個濾波器又不瞭解
我實在無法理解為何簡單的加減乘除運算會產生非實數的結果
我這個運算又有亂數影響,導致每次出現錯誤的點都有點不同
沒辦法鎖定是第幾次一定會出錯
想請問這個錯誤有可能有其他途徑產生嗎?
我又要如何預防這個錯誤呢?
我也有看了有版友分享的關於浮點數的知識
但那好像跟我的情況又不太一樣(或許只是我不瞭解)
目前卡在這個地方好久了...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.126.50.45
→
04/17 09:32, , 1F
04/17 09:32, 1F
→
04/17 09:33, , 2F
04/17 09:33, 2F
→
04/17 15:24, , 3F
04/17 15:24, 3F
→
04/17 15:26, , 4F
04/17 15:26, 4F
→
04/17 15:26, , 5F
04/17 15:26, 5F
→
04/17 15:27, , 6F
04/17 15:27, 6F
→
04/17 15:27, , 7F
04/17 15:27, 7F
→
04/17 15:27, , 8F
04/17 15:27, 8F
→
04/17 15:28, , 9F
04/17 15:28, 9F
→
04/17 15:28, , 10F
04/17 15:28, 10F
→
04/17 16:33, , 11F
04/17 16:33, 11F
→
04/17 16:33, , 12F
04/17 16:33, 12F
→
04/17 16:33, , 13F
04/17 16:33, 13F