0
我试图用Eigen中的指针初始化矩阵。通常情况下,矩阵数据结构从左到右,从上到下进行初始化。但是,我发现Matrix从上到下,从左到右进行了初始化。问题初始矩阵Eigen用指针
我设定的代码行 std::cout<<matrix<<std::endl
一个破发点,然后我按下一步F5一步,我得到了流动的结果:
1 -6.27744e+066 -6.27744e+066
2 -6.27744e+066 -6.27744e+066
-6.27744e+066 -6.27744e+066 -6.27744e+066
1 2 -6.27744e+066
2 -6.27744e+066 -6.27744e+066
1 -6.27744e+066 -6.27744e+066
1 2 -6.27744e+066
2 1 -6.27744e+066
1 2 -6.27744e+066
...
最后我得到了
1 2 1 2
2 1 2 1
1 2 1 2
,而不是
1 2 1 2
1 2 1 2
1 2 1 2
我附上原始码f或者你去检查。
#include <iostream>
#include <Eigen/Dense>
#include <Eigen/Core>
void function(Eigen::Vector2d* vec)
{
*vec<<1,2;
}
int main(int argc,char* argv[])
{
Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> matrix;
matrix.resize(3,4);
for(int i=0;i<3;i++)
for(int j=0;j<2;j++)
{
function((Eigen::Vector2d*)matrix.data()+2*i+j);
std::cout<<matrix::std::endl;
}
return 0;
}
有人给我说明吗?
嗨,感谢您的回复,恐怕这不是问题所在。无论如何,这不应该是关键,我更新问题让您更好地了解我的问题实际所在。 – hoding1991