Re: [問題] Warning: Matrix is singular to working
※ 引述《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",
非常適合在晚上失眠的時候拿來翻一下,
對於幫助睡眠十分有用.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.96.100.130
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1526516440.A.6AF.html
推
05/17 09:47,
6年前
, 1F
05/17 09:47, 1F
→
05/17 09:47,
6年前
, 2F
05/17 09:47, 2F
→
05/17 09:48,
6年前
, 3F
05/17 09:48, 3F
→
05/18 23:43,
6年前
, 4F
05/18 23:43, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章