2010-07-26 51 views
5

我正在使用基於ARM Cortex-A8的處理器,我有幾個地方計算3x3矩陣逆運算。由於Cortex-a8處理器有一個NEON SIMD處理器,我有興趣使用這個協處理器進行3x3矩陣反轉,所以我看到了幾個4x4的實現(Intel SSE和freevec),但沒有看到3x3矩陣的位置使用SIMD指令進行反操作。 freevec使用的方法是將4×4矩陣分割成4×2×2矩陣,然後對每個矩陣進行微小操作,並將結果重新組合以得到4×4矩陣的逆。我沒有看到3x3矩陣有這樣的機會。使用SIMD指令可以進行3x3矩陣求逆嗎?

任何人都有一個想法如何使用SIMD指令進行3x3矩陣求逆,這對我會有幫助嗎?

問候 維克拉姆

+3

也許感興趣:「幾乎沒有一個很好的理由來顛倒矩陣。」 http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/ – AakashM 2010-07-26 11:19:00

+0

請認真對待您的評論,看看如何從我的算法中擺脫矩陣求逆。 – HaggarTheHorrible 2010-07-26 11:59:51

+3

@AakashM那篇文章不相關。 John D. Cook關於矩陣的文章是關於科學計算中使用的大矩陣。這個問題是關於小矩陣的,通常用於計算機圖形學和物理仿真。反轉小矩陣非常有用(而且速度很快)。 – exDM69 2012-06-25 11:19:33

回答

5

可以通過添加一個第四行和第四列,兩者都是(0 0 0 1)展開3×3矩陣對4×4矩陣。反轉後,左上角的3x3子矩陣將具有所需的逆。

+0

這是一個好主意。請試試看,謝謝 – HaggarTheHorrible 2010-07-26 11:58:54

1

您可以矢量化wikipedia中描述的3x3矩陣的分析標準版本。它不應該很難。

+0

在該版本中,請注意在行列式中使用的3個差異在其他9個部分中也被重用。 – phkahler 2010-07-26 17:48:47