Функция Head в eigen3 дает неправильный результат

Я хочу получить подмножество вектора 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!

person areslp    schedule 04.07.2013    source источник


Ответы (1)


Вы должны использовать conservativeResize для подобных задач. Ошибка представляет собой тип псевдонима; вы перезаписываете данные, из которых вы читаете (хотя в этом случае я считаю, что eigen выдаст для этого явную ошибку)

person Dave    schedule 13.09.2013