pinv结果差异-matlab

pinv结果差异-matlab,matlab,image-processing,matrix,Matlab,Image Processing,Matrix,作为家庭作业的一部分,我们需要将图像A映射到图像B 我正在使用此代码进行反向映射 A=0(8,8) A=[imageB(1,1)imageB(2,1)01010(-1)*(imageB(1,1))imageA(1,1)(-1)(imageB(2,1))imageA(1,1); 图像B(1,1)图像B(2,1)01(-1)(图像B(1,1))图像A(2,1)(-1)(图像B(2,1))图像A(2,1); imageB(1,2)imageB(2,2)001(-1)(imageB(1,2))image

作为家庭作业的一部分,我们需要将图像A映射到图像B
我正在使用此代码进行反向映射
A=0(8,8)
A=[imageB(1,1)imageB(2,1)01010(-1)*(imageB(1,1))imageA(1,1)(-1)(imageB(2,1))imageA(1,1);
图像B(1,1)图像B(2,1)01(-1)(图像B(1,1))图像A(2,1)(-1)(图像B(2,1))图像A(2,1);
imageB(1,2)imageB(2,2)001(-1)(imageB(1,2))imageA(1,2)-1(imageB(2,2))imageA(1,2);
图像B(1,2)图像B(2,2)01(-1)(图像B(1,2))图像A(2,2)(-1)(图像B(2,2))图像A(2,2);
imageB(1,3)imageB(2,3)01010(-1)(imageB(1,3))imageA(1,3)(-1)(imageB(2,3))imageA(1,3);
图像B(1,3)图像B(2,3)01(-1)(图像B(1,3))图像A(2,3)(-1)(图像B(2,3))图像A(2,3);
imageB(1,4)imageB(2,4)001(-1)(imageB(1,4))imageA(1,4)(-1)(imageB(2,4))imageA(1,4);
0ImageB(1,4)imageB(2,4)011(-1)(imageB(1,4))imageA(2,4)(-1)(imageB(2,4))*imageA(2,4)]
imageA(1,4);imageA(2,4)]
B=重塑(图像A,[],1)
D=pinv(A)*B


然而,我的朋友使用这个代码:
D=inv(A'*A)*A'*B


我得到的值和他一样,除了我得到0.0000,他得到-0.0000 其余所有的正数或负数都是一样的

为什么会这样?正确答案是什么?

你建议我怎么做才能轻松地检查我的结果?

这些差异似乎源于数值不稳定性。相对于机器精度(
eps
),它们有多大? 为什么不使用反斜杠呢

>> D = A \ B;

与pinv结果相比,您的朋友使用的版本很差。@woodchips它基本上不是相同的公式吗?不是!pinv不使用该表达式,虽然该表达式在数学上相同,但在数值上不相同。有很好的理由解释为什么pinv不简单地使用这个表达式,因为在浮点运算中与的交互作用。很高兴见到以色列同胞。3.7749067859040-0.0851252221459957-0.1547675515969682.272677913596643-180.056724602071-98.3195068541737-0.000604560748425658-0.00122497904957724这些是我得到的反斜杠非常有效的数字,谢谢