0

ベクトル s のサブセットを取得したいのですが、次のコードでは正しい結果が得られませんでした。でも書いたら

    VectorXd e=s.head(svp)     

そうです。次のコードが間違っているのはなぜですか? ありがとう!

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

1 に答える 1

0

conservativeResizeこのようなタスクに使用する必要があります。エラーはエイリアシングの一種です。読み取り元のデータを上書きしています(ただし、この場合、固有値は明示的なエラーをスローすると思います)

于 2013-09-13T19:02:22.793 に答える