Eigen教程4 Array類和元素級操作

2021-10-11 17:09:49 字數 1877 閱讀 3837

相對於matrix提供的線性代數運算,array類提供了更為一般的陣列功能。array類為元素級的操作提供了有效途徑,比如點加(每個元素加值)或兩個資料相應元素的點乘。

array是個類模板(類似於matrx),前三個引數是必須指定的,後三個是可選的,這點和matrix是相同的。

array<

typename scalar,

int rowsatcompiletime,

int colsatcompiletime>

eigen也提供的一些常用類定義,array是同時支援一維和二維的(matrix二維,vector一維)。

讀寫操作過載於matrix,<<可以用於初始化array或列印。

#include

#include

using

namespace eigen;

using

namespace std;

intmain()

和matrix類似,要求array的尺寸一致。同時支援array+/-scalar的操作!

#include

#include

using

namespace eigen;

using

namespace std;

intmain()

輸出

a + b =24

6579

81012a -2=

-101

2345

67

支援array*scalar(類似於matrix),但是當執行array *array時,執行的是相應元素的乘積,因此兩個array必須具有相同的尺寸。

當需要線性代數類操作時,請使用matrix;但需要元素級操作時,需要使用array。這樣就需要提供兩者的轉化方法。

matrix提供了.array()函式將它們轉化為array物件。

array提供了.matrix()函式將它們轉化為matrix物件。

在eigen,在表示式中混合matrix和array操作是被禁止的,但是可以將array表示式結果賦值為matrix。

另外,matrix提供了cwiseproduct函式也實現了點乘。

#include

#include

using

namespace eigen;

using

namespace std;

intmain()

輸出

-- matrix m*n:

--19

2243

50-- array m*n:--5

1221

32-- with cwiseproduct:--5

1221

32-- array m +4:

--567

8

類似,array1.matrix() * array2.matrix()將執行矩陣乘法。

Eigen學習筆記 4 Array類和元素級操作

原文 eigen官網 the array class and coefficient wise operations 相對於matrix提供的線性代數運算,array類提供了更為一般的陣列功能。array類為元素級的操作提供了有效途徑,比如點加 每個元素加值 或兩個資料相應元素的點乘。且array和...

Eigen學習筆記之Array類和操作符

eigen中除了提供matrix的矩陣類之外,還提供了另一類名為array類的陣列型別的類。array類提供了一種更簡單的方式來執行基於係數的操作。具體的區別可以在運算時看出來,在此只是進行簡單的介紹,詳細情況相關部分的內容。array類模板的輸入引數與matrix類的引數類似。前三個引數和matr...

C 陣列和Array類

陣列是用於儲存多個相同型別資料的集合。陣列是一種資料結構,它可以包含同一種資料型別的多個元素。宣告陣列 先定義陣列中元素的資料型別,其後是和變數名,例如 int intarray 宣告乙個整形一維陣列 初始化陣列 宣告陣列後,就必須為陣列分配記憶體。陣列是引用資料型別,故必須為它分配堆上的記憶體。為...