2014/06/11(水) [n年前の日記]
#2 [ruby] 8x8行列と、4x4行列と2x2行列と、Matrixと、NMatrix
射影変換で8つの係数を求める際に、8x8の行列を作って逆行列を求めて、みたいなことをしているのですが。8x8行列を、4x4行列と2x2行列の組み合わせにすると高速化できるよ、という話があって。
_遠近法の射影変換パラメータ計算の高速化 (pdf)
_射影変換(ホモグラフィ)について理解してみる その5 - デジタル・デザイン・ラボラトリーな日々
どのくらい速くなるのか、Ruby上で試してみたのです。
_test_narray.rb を使用。
なんだか妙な結果に。
_遠近法の射影変換パラメータ計算の高速化 (pdf)
_射影変換(ホモグラフィ)について理解してみる その5 - デジタル・デザイン・ラボラトリーな日々
どのくらい速くなるのか、Ruby上で試してみたのです。
_test_narray.rb を使用。
> ruby test_narray.rb user system total real Matrix 8x8: 3.026000 0.000000 3.026000 ( 3.033174) Matrix 4x4 2x2: 1.264000 0.000000 1.264000 ( 1.257072) NMatrix 8x8: 0.421000 0.000000 0.421000 ( 0.418023) NMatrix 4x4 2x2: 0.515000 0.000000 0.515000 ( 0.515030)
なんだか妙な結果に。
- Ruby標準のMatrixを使う場合は、たしかに8x8行列より4x4、2x2行列のほうが速い。
- NArray の NMatrix を使う場合は、8x8行列のままのほうが速い。4x4、2x2行列にするとむしろ遅くなる。
[ ツッコむ ]
以上です。