簡體   English   中英

pinv結果diff - matlab

[英]pinv result diff - matlab

作為我們作業的一部分,我們需要將imageA映射到iamge B.
我正在使用此代碼進行逆映射
A = zeros(8,8);
A = [imageB(1,1) imageB(2,1) 0 0 1 0 (-1)*(imageB(1,1)) imageA(1,1) (-1) (imageB(2,1)) imageA(1,1);
0 0 imageB(1,1) imageB(2,1) 0 1 (-1)
(imageB(1,1)) imageA(2,1) (-1) (imageB(2,1)) imageA(2,1);
imageB(1,2) imageB(2,2) 0 0 1 0 (-1)
(imageB(1,2)) imageA(1,2) (-1) (imageB(2,2)) imageA(1,2);
0 0 imageB(1,2) imageB(2,2) 0 1 (-1)
(imageB(1,2)) imageA(2,2) (-1) (imageB(2,2)) imageA(2,2);
imageB(1,3) imageB(2,3) 0 0 1 0 (-1)
(imageB(1,3)) imageA(1,3) (-1) (imageB(2,3)) imageA(1,3);
0 0 imageB(1,3) imageB(2,3) 0 1 (-1)
(imageB(1,3)) imageA(2,3) (-1) (imageB(2,3)) imageA(2,3);
imageB(1,4) imageB(2,4) 0 0 1 0 (-1)
(imageB(1,4)) imageA(1,4) (-1) (imageB(2,4)) imageA(1,4);
0 0 imageB(1,4) imageB(2,4) 0 1 (-1)
(imageB(1,4)) imageA(2,4) (-1) (imageB(2,4))*imageA(2,4)];
imageA(1,4); imageA(2,4)];
B = reshape(imageA,[],1);

D = pinv(A)*B;


然而,我的朋友使用此代碼:
D = inv(A'*A)*A'*B;


我獲得與他相同的值,除了我得到0.0000並且他得到-0.0000所有其余數字的正數或負數都是相同的。

為什么是這樣 ? 什么是正確的答案?
你有什么建議我可以輕松檢查我的結果?

看起來這些差異源於數值不穩定性。 它們在機器精度( eps )方面有多大? 你為什么不用backslash

>> D = A \ B;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM