C++ 行叉积本征值
我试图在一个C++ 行叉积本征值,c++,eigen,C++,Eigen,我试图在一个Eigen::MatrixXd dir的每一行与Eigen::MatrixXd v0v2的对应行之间进行叉积,并将结果保存在另一个Eigen::MatrixXd pvec中 pvec的初始化:Eigen::MatrixXd pvec(v0v2.rows(),3) 我尝试过这种肮脏的方法: (大小i=0;i
Eigen::MatrixXd dir
的每一行与Eigen::MatrixXd v0v2
的对应行之间进行叉积,并将结果保存在另一个Eigen::MatrixXd pvec
中
pvec的初始化:Eigen::MatrixXd pvec(v0v2.rows(),3)代码>
我尝试过这种肮脏的方法:
(大小i=0;i{
pvec.行(i)=方向行(i).交叉(v0v2.行(i));
}
我得到这个错误:这个方法只适用于特定大小的向量
我想这可能是因为列主/行主问题,所以我添加了.transpose()
,但这也没有帮助。
我总是可以做一些更脏的个人跨产品元素的事情,比如:
Vec3交叉积(const Vec3&v)const
{返回Vec3(y*v.z-z*v.y,z*v.x-x*v.z,x*v.y-y*v.x);}
但我想用本征方法。
任何帮助都会很好 编译时必须知道.cross
的参数大小为3。
尝试将矩阵声明为Eigen::Matrix dir(N,3)代码>,等等。您也可以使用缩写Eigen::MatrixX3d dir(N,3)代码>。找到了答案。谢谢你的回答!我还需要在循环中这样做吗?此外,我在函数外声明矩阵,并通过引用矩阵调用函数。它仍然给我同样的错误。@RickM。你有没有想过?你最后做了什么?循环的?xkcd一如既往地相关,