Eigen基礎小結

2021-09-11 02:59:55 字數 2489 閱讀 6141

**:

一、eigen基礎

1、使用命名空間:using namespace eigen;

2、matrixb; // fixed rows, dynamic cols.

需要使用: b.resize(2,3); 確定具體的列數 ;

3、矩陣初始化方式:matrix3f::zero(); 和  x.setzero();的語法區別:

float value = 3.0;

matrix3f x; // 建立乙個3x3的單精度矩陣

x = matrix3f::zero(); //全零矩陣

x = matrix3f::ones(); //全一矩陣

x = matrix3f::constant(value); //全value矩陣

x = matrix3f::identity(); //單位矩陣

x = matrix3f::random(); // 隨機矩陣

x.setzero();

x.setones();

x.setidentity();

x.setconstant(value);

x.setrandom();

4、動態大小的矩陣:

int rows = 3;

int cols = 4;

matrixxf x;

x = matrixxf::zero(rows, cols);

5、constant型

matrixxf::constant(2, 3, sqrt(2)) << endl; // 2x3的單精度矩陣

rowvector3i v; //3維行向量

v.setconstant(6);

6、用cast 轉換型別

vector3d md(1,2,3);

vector3f mf = md.cast();

7、一些reduction方法: mincoeff() , maxcoeff() , sum() , trace() , norm() :

matrix3f x;

x << 5,3,1,2,7,8,9,4,6;

cout << x.mincoeff() << endl;

cout << x.colwise().mincoeff() << endl;

cout << x.rowwise().mincoeff() << endl;

二、稀疏矩陣操作

操作和求解稀疏問題需要的模組

1、sparsecore 

sparsematrix 和 sparsevector 類,基本線性代數(包括三角求解器) 

2、sparsecholesky 

稀疏llt和ldltcholesky分解,解決稀疏正定問題。

3、sparselu 

稀疏lu分解

4、sparseqr 

稀疏qr分解

5、iterativelinearsolvers

6、sparse 

包含上述所有的模組。

稀疏矩陣的格式

sparsematrix是eigen的稀疏模組的最主要的稀疏矩陣。

sparsematrix包含了4個精簡的陣列

(1)values: 儲存非零元素

(2)innerindices: 儲存非零元素的行/列索引.

(3)outerstarts: 儲存每一列/行第乙個非零元素在上面兩個陣列中的索引。

(4)innernnzs: 儲存每一列/行中非零元素的數量。inner在列優先矩陣中表示乙個列,在行優先矩陣中表示乙個行。outer表示另乙個方向。

關於稀疏矩陣,最重要的一點是:稀疏矩陣的儲存方式,是按列優先儲存,還是按行優先儲存。

三、稀疏矩陣的壓縮儲存

稀疏矩陣:非0元素很少(≤ 5%)且分布無規律。

對於稀疏矩陣來說,採用二維陣列的儲存方法既浪費大量的儲存單元用來存放零元素,又要在運算中花費大量的時間來進行零元素的無效計算,顯然不科學。所以必須考慮對稀疏矩陣進行壓縮儲存。

對稀疏矩陣進行壓縮儲存的一種較好的方法是:只儲存在矩陣中極少數的非零元素,為此必須對每乙個非零元素,儲存它的下標和值。可以採用乙個三元組trituple來唯一地確定乙個矩陣元素。因此,稀疏矩陣需要使用乙個三元組陣列(亦稱為三元組表)來表示。

可以仿照對稱矩陣的壓縮儲存,可用一維陣列b儲存稀疏矩陣a(這要區分兩種儲存方式:行優先方式和列優先方式)

Eigen初步1 初步體驗Eigen庫

前言 eigen 是乙個線性算術的c 模板庫,包括 vectors,matrices,開源以及相關演算法。功能強大 快速 優雅以及支援多平台,可以使用該庫來方便處理一些矩陣的操作,達到類似matlab那樣的快捷。現在已經發展到eigen3了,目前最新版本為eigen 3.1.2。eigen使用預備工...

C 呼叫Eigen庫進行矩陣基礎運算

eigen標頭檔案介紹 利用c 呼叫eigen庫實現矩陣的基礎運算,包括矩陣的相加,相乘,轉置,求逆,伴隨矩陣,特徵值。eigen是c 中可以用來呼叫並進行矩陣計算的乙個庫,裡面封裝了一些類,需要的標頭檔案和功能如下 eigen基礎語法說明 矩陣型別 eigen中的矩陣型別一般都是用類似matri ...

XML基礎小結

1 xml代表擴充套件的標記語言 extensible markup language 2 xml由w3c聯盟發展維護 3 xml是一種元語言,可以用來定義其它語言 4 xml沒有定義任何標記,它提供了一種工具定義標記以及它們之間的結構關係 5 xml是一種用於結構化文字交換的標記語言 6 xml代...