Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初始化向量C+的矩阵+;带本征 我的最终目标是使用一个矩阵,其中每个元素是一个向量,使用C++的特征模块,这样我就可以做矩阵求和。 我想到的数据类型是: Matrix<Vector3d,256,256> Matrix_A; 矩阵A;_C++_C++11_Matrix_Vector_Eigen - Fatal编程技术网

初始化向量C+的矩阵+;带本征 我的最终目标是使用一个矩阵,其中每个元素是一个向量,使用C++的特征模块,这样我就可以做矩阵求和。 我想到的数据类型是: Matrix<Vector3d,256,256> Matrix_A; 矩阵A;

初始化向量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<

对于256x256矩阵,其中每个元素的数据类型为Vector3D。这不管用。。 这可能吗?

对于第一个模板参数仅采用标量类型(尽管文档提示可能扩展支持的类型,但不清楚如何扩展):

矩阵的三个强制性模板参数为:

矩阵

标量是标量类型,即系数的类型。也就是说,如果需要浮点矩阵,请在此处选择浮点。有关所有受支持的标量类型的列表以及如何扩展对新类型的支持,请参见标量类型

这意味着不可能定义向量矩阵。我看到的唯一可能性是使用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中放置固定大小的矩阵时,请注意对齐问题