C++ 特征-将向量重塑为矩阵
我试图将一个向量重塑为一个矩阵,但得到以下错误C++ 特征-将向量重塑为矩阵,c++,reshape,eigen,C++,Reshape,Eigen,我试图将一个向量重塑为一个矩阵,但得到以下错误 unsigned int Nx = 8; unsigned int Ny = 7; Eigen::VectorXi G_temp = Eigen::VectorXi::LinSpaced((Nx + 2) * (Ny + 2),0,(Nx + 2) * (Ny + 2)-1); Eigen::MatrixXd G = Eigen::Map<Eigen::MatrixXd>(G_temp.data(),Nx+2, Ny+2
unsigned int Nx = 8;
unsigned int Ny = 7;
Eigen::VectorXi G_temp = Eigen::VectorXi::LinSpaced((Nx + 2) * (Ny + 2),0,(Nx + 2) * (Ny + 2)-1);
Eigen::MatrixXd G = Eigen::Map<Eigen::MatrixXd>(G_temp.data(),Nx+2, Ny+2); // error: no matching constructor for initialization of 'Eigen::Map<Eigen::MatrixXd>'
无符号整数Nx=8;
无符号整数Ny=7;
特征向量G_temp=Eigen::VectorXi::LinSpaced((Nx+2)*(Ny+2),0,(Nx+2)*(Ny+2)-1);
Eigen::MatrixXd G=Eigen::Map(G_temp.data(),Nx+2,Ny+2);//错误:“Eigen::Map”的初始化没有匹配的构造函数
我遵循了所写的内容,但我不理解我做错的方式。在Eigen中没有从整数值表达式到双数值表达式的隐式转换。只需对
G_temp
使用VectorXd
(以及LinSpaced
表达式):
或者使用MatrixXi
-Map和.cast()
将结果分配给G
Eigen::MatrixXd G = Eigen::Map<Eigen::MatrixXi>(G_temp.data(),Nx+2, Ny+2).cast<double>();
或与master/3.4分支机构:
G.reshaped().setLinSpaced(0,(Nx + 2) * (Ny + 2)-1);
Eigen::MatrixXd G(Nx+2, Ny+2); // allocate matrix
// set values in-place:
Eigen::VectorXd::Map(G.data(), (Nx + 2) * (Ny + 2)).setLinSpaced(0,(Nx + 2) * (Ny + 2)-1);
G.reshaped().setLinSpaced(0,(Nx + 2) * (Ny + 2)-1);