相對於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 宣告乙個整形一維陣列 初始化陣列 宣告陣列後,就必須為陣列分配記憶體。陣列是引用資料型別,故必須為它分配堆上的記憶體。為...