首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ceres:计算参数的不确定性

Ceres:计算参数的不确定性
EN

Stack Overflow用户
提问于 2018-04-10 20:38:00
回答 1查看 686关注 0票数 1

我正在使用Ceres进行拟合,并希望获得拟合参数的不确定性。有人建议使用Covariance类,但我不确定我是否正确阅读了文档。以下是我在文档中尝试的类比,以获得简单线性拟合的不确定性:

代码语言:javascript
运行
复制
void Fit::fit_linear_function(const std::vector<double>& x, const std::vector<double>& y, int idx_start, int idx_end, double& k, double& d) {

  Problem problem;
  for (int i = idx_start; i <= idx_end; ++i) {
    //std::cout << "i x y "<<i<< " " << x[i] << " " << y[i] << std::endl;
    problem.AddResidualBlock(
        new ceres::AutoDiffCostFunction<LinearResidual, 1,1,  1>(
            new LinearResidual(x[i], y[i])),
        NULL, &k, &d);
  }
  Covariance::Options options;
  Covariance covariance(options);
  std::vector<std::pair<const double*, const double *>> covariance_blocks;
  covariance_blocks.push_back(std::make_pair(&k,&k));
  covariance_blocks.push_back(std::make_pair(&d,&d));
  CHECK(covariance.Compute(covariance_blocks,&problem));
  double covariance_kk;
  double covariance_dd;
  covariance.GetCovarianceBlock(&k,&k, &covariance_kk);
  covariance.GetCovarianceBlock(&d,&d, &covariance_dd);
  std::cout<< "Covariance test k" << covariance_kk<<std::endl;
  std::cout<< "Covariance test d" << covariance_dd<<std::endl;

它编译并产生输出,但结果与我从scipy获得的结果相差很远,所以我一定是犯了一个错误。

EN

回答 1

Stack Overflow用户

发布于 2018-04-14 02:11:50

解决这个问题,然后使用ceres::协方差类。

http://ceres-solver.org/nnls_covariance.html

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

https://stackoverflow.com/questions/49753917

复制
相关文章

相似问题

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