**:
一、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代...