1

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

A =

    0.9966    0.0007   -6.5625
    0.0027    0.9938    1.0598
         0         0    1.0000

以及一组点,它们的 x 和 y 坐标分别由X和表示Y

假设,

[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为了方便还是我在这里遗漏了什么?

4

1 回答 1

2

我会先说这是我最好的猜测......

tforminv可能在没有实际形成逆矩阵的情况下执行转换。例如,您可以通过Ax = b两种方式求解线性方程组:

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

根据 的文档inv,第二个选项(使用矩阵除法运算符)可以“从执行时间和数值精度的角度”表现得更好,因为它“使用高斯消元产生解决方案,而不形成逆”。tforminv可能会做类似的事情,因此与将逆矩阵传递给 相比,表现出更好的整体行为tformfwd

如果您愿意,您可能会尝试许多不同的转换矩阵并测试这两种方法(tforminvtformfwdinv),以查看结果的准确度和计算速度。

于 2009-10-07T23:15:30.233 回答