Re: [問題] Warning: Matrix is singular to working

作者: YoursEver (豬是妳)   2018-05-17 08:20:37
※ 引述《Ecampus ()》之銘言:
: Warning: Matrix is singular to working precision.
: > In matlab.internal.math.mpower.viaMtimes (line 35)
: 剛剛執行matlab時候
: 出現這行字
: 雖然有猜測意思 但不敢確定 求高手教我
照經驗,所有condition number過大的狀況都會跳出這一行.
condition number的定義是 "絕對值最大和最小的兩個eigenvalue的商"
因此一般實務上,
除了恰好"因為緣分問題導致某個eigenvalue非常接近零"這樣的原因之外,
其他,當要解影像的registration/warping的問題時,
也有可能會發生這樣的狀況,
例如,當你要把一大群點的座標丟進矩陣裡面求兩群點之間的transformation matrix時,
就可能會因為 (x, y, z) 座標的scale差異太大,
(x,y的範圍可能是1~1024, z的範圍可能只有1~10)
導致某個eigenvalue的數值大小出現問題.
上面說的姑且可以想成下面這樣,
[1000 ] [ x1 x2 x3 ... ]
[ B ] = [ alpha ] * [ A ] = [ 1000 ] * [ y1 y2 y3 ... ]
[ 1] [ z1 z2 z3 ... ]
(3-by-k matrix)
所以 矩陣B 的condition number極有可能會出問題,
因為 矩陣B 的其中兩個eigenvalue,相當於是對應到 矩陣A 的那兩個 eigenvalue 的1000倍.
理論上來說,
所有用類似的方式收集而來的 矩陣B 都有可能發生你說的那個問題.
至於要怎麼解決?
就如同上面的式子說的,
最簡單的工程解答就是把 矩陣[alpha] 給除掉,
也就是把有問題的 column或row vector給 scale down 就好.
話說有一本書叫做"matrix computation",
非常適合在晚上失眠的時候拿來翻一下,
對於幫助睡眠十分有用.
作者: j0958322080 (Tidus)   2018-05-17 09:47:00
是說matlab好像會先幫你判斷,可是解出來就怪怪的我之後自己寫個 LU 分解跟 QR 分解跟他的不太一樣不過文末那本書確實不錯,可以看看
作者: Ecampus (7.7)   2018-05-18 23:43:00
感謝 我測試一下Q_Q

Links booklink

Contact Us: admin [ a t ] ucptt.com