C 矩陣運算庫推薦

2021-10-03 18:14:00 字數 1636 閱讀 5794

矩陣運算再很多數學演算法中經常用到,不懂矩陣,就不算真正理解現代數學。大量現代高階演算法都需要用到矩陣運算,根據之前的工作,順便做了個調查,做一些相關的推薦吧。

許可證:mpl 2.0

目前使用比較廣的c++矩陣運算庫之一,是在c++下使用matlab方式操作矩陣很好的選擇,許多matlab的矩陣操作函式都可以找到對應,這對習慣了matlab的人來說實在是非常方便,另外如果要將matlab下做研究的**改寫成c++,使用armadillo也會很方便,這裡有乙個簡易的matlab到armadillo的語法轉換。下面列了一些armadillo的特性:

總體來講很好用的矩陣庫,速度上因為可以使用openblas等庫進行加速,因此還是不錯的。網上可以找到乙個叫 nghia ho的人寫的關於和eigen及opencv的速度比較做參考,速度略優。不過也由於依賴lapack等庫完成矩陣分解計算,在windows上執行可能會比較痛苦。

許可證:主要為mpl 2.0,部分有來自第三方的**為lgpl

非常強大的矩陣運算庫,我一直在用,大家用了都說好。使用類似matlab的方式操作矩陣,可以在這裡檢視官方的與maltab的對應關係,個人感覺單純講和matlab的對應的話,可能不如armadillo對應的好,但功能絕對強大。eigen包含了絕大部分你能用到的矩陣演算法,同時提供許多第三方的介面。eigen乙個重要特點是沒有什麼依賴的庫,本身僅有許多標頭檔案組成,因此非常輕量而易於跨平台。你要做的就是把用到的標頭檔案和你的**放在一起就可以了。eigen的一些特性:

總體來講,如果經常做一些比較複雜的矩陣計算的話,或者想要跨平台的話,非常值得一用。

許可證:目前是bsd

opencv在計算機視覺領域名氣實在是太大了,而且最近幾年庫里的演算法開始**式的增長,最近貌似計畫推出opencv 3了(參見這裡)。有人開始抱怨opencv現在內容太雜了,不過這樣的好處就是從是研究開發的話,乙個庫就可以得到大部分計算機視覺的流行演算法,省去了很多麻煩。

opencv自帶的矩陣計算功能算不上是專業的矩陣計算庫,但是如果你用c++寫機器學習、計算機視覺的程式,一定會經常用到。opencv的矩陣計算功能還算比較完善,雖然速度略差勁,但用在大多數的開發和研究領域也是足夠了。特別是opencv 2.2之後提供了類matlab的矩陣c++介面,使得直接使用opencv進行矩陣計算變得簡單易用。列兩個比較值得一提的特點:

**:許可證:mit

作者karl rupp來自維也納大學,開發了一套vienna*系列的開源軟體,其中還包括viennamath(symbolic math符號計算)、viennafem(有限元)等等。viennacl在後台支援opencl、openmp和cuda,可以方便地使用各種型號的cpu或gpu進行平行計算。

安裝使用有非常詳細的官方文件。

**:petsc在網上可一找到很多英文資料,使用也比較廣泛。不過在學校實驗室的一般的科學計算可能接觸的還比較少。推薦乙個youtube(可能要翻牆)的五集petsc簡單入門《prace video tutorial – petsc tutorial》。

在stackexchange上有乙個帖子《recommendations for a usable, fast c++ matrix library?》裡面蒐羅了許多矩陣運算庫。另外inria有人寫了乙個文件《linear algebra libraries》,對常見的矩陣運算庫進行了總結。除了上面提到的幾個庫之外,下面還有一些比較常用或堅持更新的矩陣庫:

C 矩陣運算庫推薦

最近在幾個地方都看到有人問c 下用什麼矩陣運算庫比較好,順便做了個調查,做一些相關的推薦吧。主要針對稠密矩陣,有時間會再寫乙個稀疏矩陣的推薦。許可證 mpl 2.0 目前使用比較廣的c 矩陣運算庫之一,是在c 下使用matlab方式操作矩陣很好的選擇,許多matlab的矩陣操作函式都可以找到對應,這...

C 矩陣運算庫推薦

最近在幾個地方都看到有人問c 下用什麼矩陣運算庫比較好,順便做了個調查,做一些相關的推薦吧。主要針對稠密矩陣,有時間會再寫乙個稀疏矩陣的推薦。許可證 mpl 2.0 目前使用比較廣的c 矩陣運算庫之一,是在c 下使用matlab方式操作矩陣很好的選擇,許多matlab的矩陣操作函式都可以找到對應,這...

C 矩陣庫推薦

最近在幾個地方都看到有人問c 下用什麼矩陣運算庫比較好,順便做了個調查,做一些相關的推薦吧。主要針對稠密矩陣,有時間會再寫乙個稀疏矩陣的推薦。許可證 mpl 2.0 目前使用比較廣的c 矩陣運算庫之一,是在c 下使用matlab方式操作矩陣很好的選擇,許多matlab的矩陣操作函式都可以找到對應,這...