2013-07-04 33 views
0

我想获取矢量s的子集,下面的代码没有给出正确的结果。但如果我写eigen3中的头部函数产生错误的结果

VectorXd e=s.head(svp)  

e是正确的。为什么下面的代码是错误的?谢谢!

Eigen::JacobiSVD<Eigen::MatrixXd> svd(input, Eigen::ComputeThinU | 
      Eigen::ComputeThinV); 
    VectorXd s=svd.singularValues(); 
    int svp=5; 
    s=s.head(svp); //Wrong! 

回答

0

您应该使用conservativeResize执行此类任务。该错误是一种混叠;你正在覆盖你正在阅读的数据(尽管在这种情况下,我相信本征会给它一个明确的错误)

相关问题