初始化向量C+的矩阵+;带本征 我的最终目标是使用一个矩阵,其中每个元素是一个向量,使用C++的特征模块,这样我就可以做矩阵求和。 我想到的数据类型是: Matrix<Vector3d,256,256> Matrix_A; 矩阵A;
对于256x256矩阵,其中每个元素的数据类型为Vector3D。这不管用。。 这可能吗?对于第一个模板参数仅采用标量类型(尽管文档提示可能扩展支持的类型,但不清楚如何扩展): 矩阵的三个强制性模板参数为:初始化向量C+的矩阵+;带本征 我的最终目标是使用一个矩阵,其中每个元素是一个向量,使用C++的特征模块,这样我就可以做矩阵求和。 我想到的数据类型是: Matrix<Vector3d,256,256> Matrix_A; 矩阵A;,c++,c++11,matrix,vector,eigen,C++,C++11,Matrix,Vector,Eigen,对于256x256矩阵,其中每个元素的数据类型为Vector3D。这不管用。。 这可能吗?对于第一个模板参数仅采用标量类型(尽管文档提示可能扩展支持的类型,但不清楚如何扩展): 矩阵的三个强制性模板参数为: 矩阵 标量是标量类型,即系数的类型。也就是说,如果需要浮点矩阵,请在此处选择浮点。有关所有受支持的标量类型的列表以及如何扩展对新类型的支持,请参见标量类型 这意味着不可能定义向量矩阵。我看到的唯一可能性是使用Eigen的矩阵对象的std::vector: typedef Matrix<
矩阵
标量是标量类型,即系数的类型。也就是说,如果需要浮点矩阵,请在此处选择浮点。有关所有受支持的标量类型的列表以及如何扩展对新类型的支持,请参见标量类型
这意味着不可能定义向量矩阵。我看到的唯一可能性是使用Eigen的矩阵
对象的std::vector
:
typedef Matrix<float,256,256> my_2dfmat;
std::vector<my_2dfmat> Matrix_A(3);
typedef矩阵my_2dfmat;
std::向量矩阵_A(3);
这确实有一些缺点,例如索引顺序不直观等。如果您阅读编译器的错误消息,您会发现如下内容:
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;
int N=256;
使用Mat=矩阵;
材料A(N,N),B(N,N);
材料C=A+B;
如果向量大小相同,可以使用Tensor3D。请参阅Eigen网站的相关链接:这很酷@ggael,是否使用标量类型记录的矩阵
?(它支持哪些操作,等等?)它没有真正的文档记录,也没有很好的支持,但是基本的操作和coeff-wise操作应该可以。混合类型可能不起作用<代码>数组可能会为这种嵌套提供更好的体验。在std::vector中放置固定大小的矩阵时,请注意对齐问题