假设我有任意的变换矩阵A,例如,

A =

    0.9966    0.0007   -6.5625
    0.0027    0.9938    1.0598
         0         0    1.0000

和一组点,使得它们的x和y坐标通过XY分别表示。

和假设,

[Xf Yf] = tformfwd(maketform('projective',A),X,Y);

现在,

[Xff Yff] = tformfwd(maketform('projective',inv(A)),Xf,Yf);
[Xfi Yfi] = tforminv(maketform('projective',A),Xf,Yf); 

[Xff Yff] [Xfi Yfi]似乎是完全相同的(和它们应该)。

tforminv就在那里为方便起见,还是我失去了一些东西?

有帮助吗?

解决方案

我会说前言本是我的最好的猜测 ...

这有可能是 tforminv 可以在不实际形成执行变换逆矩阵。例如,可以求解线性方程组Ax = b的系统在两个方面:

x = inv(A)*b;
x = A\b;

根据用于 inv 时,第二个选项(文档使用矩阵除法运算符)可以执行“从两个的执行时间和数值精度的角度来看”更好,因为它“产生使用高斯消去该溶液中,而不形成逆”。 tforminv可以做同样的事情,从而表现出更好的整体性能与通过逆矩阵相比 tformfwd

如果你是这样的倾向,你很可能尝试一些不同的变换矩阵和测试两种方法(tforminvtformfwdinv)看到的结果如何准确的速度有多快,他们是每一所计算的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top