Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.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++_Reshape_Eigen - Fatal编程技术网

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);