首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ceres-Solver:由残差函数器使用的可变变量是好的实践吗?还有其他选择吗?

Ceres-Solver:由残差函数器使用的可变变量是好的实践吗?还有其他选择吗?
EN

Stack Overflow用户
提问于 2018-04-20 17:49:08
回答 1查看 202关注 0票数 1

据我所知,Ceres的接口需要将每个残差定义为函数器,其中operator()const的成员函数。下面是我感兴趣的一个例子:

代码语言:javascript
复制
class some_residual
{
   public:
    template<typename type>
    bool operator()(const type* const some_params, type* residual) const;

    Eigen::MatrixXd m_M;/*The explanation follows. Nevermind its type, all
                          that matters is that it is not a raw buffer*/
};

现在,在一个特殊的情况下,我需要“助手”矩阵m_M,我想在operator()中使用它。例如,我可以将其声明为mutable Eigen::MatrixXd m_M;,或者将其更改为std::shared_ptr<Eigen::MatrixXd> m_pM;,然后从operator()内部更新*mP (或者类似地,我可以使用引用)。作为另一种选择,我可以将这个矩阵的数据作为原始C指针传递给operator(),并在Ceres优化中修复它们。

我更喜欢尽可能避免使用原始指针,并且我倾向于认为使用mutable是最好的解决方案。一般来说,这是好的还是坏的实践,特别是在Ceres中使用它是安全的吗?我还有其他选择吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-23 05:26:32

可变不是一个好主意。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49938818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档