簡體   English   中英

用本征初始化向量C ++的矩陣

[英]Initializing matrix of vectors C++ with eigen

我的最終目標是使用帶有c ++的特征模塊得到一個矩陣,其中每個元素都是一個向量,這樣我就可以對矩陣求和。 我想出的數據類型是:

Matrix<Vector3d,256,256> Matrix_A;

對於256x256矩陣,其中每個元素都是數據類型Vector3D。 這不起作用..這甚至可能嗎?

如果您閱讀編譯器的錯誤消息,您會發現類似於:

error: static_assert failed "OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG"

這意味着對於這樣大的對象,您應該移動到動態分配的矩陣類型:

int N = 256;
using Mat = Matrix<Vector3d,Dynamic,Dynamic>;
Mat A(N,N), B(N,N);
Mat C = A+B;

Eigen的Matrix模板僅為第一個模板參數采用標量類型(而doc提示可能擴展支持的類型,但不清楚如何):

Matrix的三個必需模板參數是:

Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>

標量是標量類型,即系數的類型。 也就是說,如果你想要一個浮點矩陣,請在這里選擇float。 有關所有支持的標量類型的列表以及如何擴展對新類型的支持,請參閱標量類型。

這意味着不可能定義向量矩陣。 我看到的唯一可能是使用Eigen的Matrix對象的std::vector

typedef Matrix<float,256,256> my_2dfmat;

std::vector<my_2dfmat> Matrix_A(3);

這確實有一些缺點,例如索引順序不直觀等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM