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