1
快速背景下,我與有想到一個普通的或映射特徵矩陣功能的另一個C++庫的工作並不一致。我想使用映射版本來避免複製的內存開銷。映射特徵矩陣參考對象與塊
這就是說,我想利用矩陣塊工作。我知道這些可以通過block
方法返回Eigen::Block
或Eigen::Ref
對象來輕鬆訪問。下面我正在嘗試使用Ref
對象。我想Map
Eigen::MatrixXd
塊。但是,看起來我不能跨列進行映射,只能在列中進行連續的元素映射(我認爲這是列導向數據的結果)。您可以在下面看到輸出的差異。
有什麼辦法,我Map
的Eigen::MatrixXd
塊?
#include <iostream>
#include <Eigen/Core>
int main()
{
Eigen::MatrixXd A(3,3);
A(0,0) = 1.0;
A(0,1) = 2.0;
A(0,2) = 3.0;
A(1,0) = 4.0;
A(1,1) = 5.0;
A(1,2) = 6.0;
A(2,0) = 7.0;
A(2,1) = 8.0;
A(2,2) = 9.0;
std::cout << "source" << std::endl;
std::cout << A << std::endl;
Eigen::Ref<Eigen::MatrixXd> block = A.block(1,1,1,2);
std::cout << "block" << std::endl;
std::cout << block << std::endl;
Eigen::Map<Eigen::MatrixXd> map(block.data(), block.rows(), block.cols());
std::cout << "map" << std::endl;
std::cout << map << std::endl;
}
輸出:
source
1 2 3
4 5 6
7 8 9
block
5 6
map
5 8
非常好,謝謝。 – cdeterman