eigen 矩陣塊操作
在Eigen中最基本的快操作運算是用.block()完成的。提取的子矩陣同樣分為動態大小和固定大小。
| 塊操作 | 構建動態大小子矩陣 |
|---|---|
提取塊大小為(p,q),起始於(i,j) |
matrix.block(i,j,p,q) |
同樣需要注意的是在Eigen中,索引是從0開始。所有的操作方法都可以適用於Array.同樣使用固定大小的操作方式在小型矩陣運算時更加的快,但要求在編譯時就要知道矩陣的大小。
Matrix16x16 E = Matrix16x16::Identity(); Matrix16x16 Q = Matrix16x16::Identity(); for (int i = 0; i < A.Rows; i++) { for (int j = 0; j < A.Rows; i++) { if (i==j) { Q.block(i*4, j*4, 4, 4) = A(i, j)*E - B.matrix.transpose(); } else { Q.block(i*4, j*4, 4, 4) = A(i, j)*E; } } }
.block() 可以為左值,也可以為右值。
參考:
