iOS開發中矩陣的操作(乘積 求逆和轉置)

2021-07-15 03:29:06 字數 1113 閱讀 6490

藍芽開發中牽扯到很多關於矩陣方面的演算法,之前也找了不少資料,各個語言都有關於矩陣計算的演算法,其中swift語言中的演算法比較簡潔,但是經測試卻有問題,具體各個演算法網上隨便搜都有,參考位址包括了向量的運算以及矩陣的構建、相乘,求逆和轉置,具體說下這個矩陣求逆,**如下:

var inmatrix = matrix  

var pivot : __clpk_integer = 0

var workspace = 0.0

var error : __clpk_integer = 0

var n = __clpk_integer(sqrt(double(matrix.count)))

dgetrf_(&n, &n, &inmatrix, &n, &pivot, &error)

iferror != 0

dgetri_(&n, &inmatrix, &n, &pivot, &workspace, &n, &error)

return inmatrix

}var m = [1.0, 2.0, 3.0, 4.0]

invert(m) // returns [-2.0, 1.0, 1.5, -0.5]

func inv(x: matrix) -> matrix
使用時可以直接構建matrix物件,然後獲得屬性i就可,由於在oc或者swift中二維陣列並不像其它語言那麼方便,而且傳遞引數構建矩陣的時候一般傳的也是一維陣列,所以矩陣求逆後如果也想返回一維陣列的話,可以resultmatrix.i.flat.grid:

var resultmatrix = matrix(columns: columns,rows: rows)

return resultmatrix.i.flat.grid;

如果是採用oc編寫的程式話,請使用混編。再匯入swix時會有乙個問題,裡面會有乙個swix-bridging-header.h的橋檔案,可以將這個檔案內容複製貼上到自己的橋檔案中,然後把這個檔案刪掉即可,一些對應的引用位置也將名字替換一下即可。如果oc和swift混編有疑問,可以參考:

Numpy 中的矩陣求逆

import numpy as np a np.array 1,2 3,4 初始化乙個非奇異矩陣 陣列 print np.linalg.inv a 對應於matlab中 inv 函式 矩陣物件可以通過 i 更方便的求逆 a np.matrix a print a.i import numpy as ...

Numpy 中的矩陣求逆

import numpy as np a np.array 1,2 3,4 初始化乙個非奇異矩陣 陣列 print np.linalg.inv a 對應於matlab中 inv 函式 矩陣物件可以通過 i 更方便的求逆 a np.matrix a print a.i import numpy as ...

矩陣的求逆

最近做乙個加密演算法遇到需要計算矩陣的逆,閒著無聊,記錄一下,以後免得再麻煩。include include include define max 20 define e 0.000000001 計算矩陣src的模 double calculate a double src max int n fo...