1

次のような任意の変換行列Aがあるとします。

A =

    0.9966    0.0007   -6.5625
    0.0027    0.9938    1.0598
         0         0    1.0000

Xそして、それらのx座標とy座標がそれぞれとで表されるような点のセット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を2つの方法で解くことができます。

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

のドキュメントによるとinv、2番目のオプション(行列除算演算子を使用)は、「逆数を形成せずにガウスの消去法を使用して解を生成する」ため、「実行時間と数値精度の両方の観点から」パフォーマンスが向上します。tforminv同様のことを行う可能性があるため、逆行列をに渡す場合と比較して、全体的な動作が向上しtformfwdます。

気が向いたら、おそらくいくつかの異なる変換行列を試して、2つのアプローチ(tforminvまたはtformfwdおよびinv)をテストして、結果がどれほど正確で、それぞれがどれだけ速く計算されるかを確認できます。

于 2009-10-07T23:15:30.233 に答える