0
点赞
收藏
分享

微信扫一扫

记录Ceres优化中遇到的一个奇怪问题

晚熟的猫 2022-04-03 阅读 69
c++算法

笔者在学习视觉SLAM十四讲的第6讲非线性优化时,运行使用Ceres拟合曲线的例程,发现当生成数据为如下代码时

  vector<double> x_data, y_data;      // 数据
  for (int i = 0; i < N; i++) {
    double x = i / 100.0;
    x_data.push_back(x);
    double real = exp(ar * x * x + br * x + cr);
    double gauss_noise = rng.gaussian(w_sigma * w_sigma);
    y_data.push_back(real + gauss_noise);
    cout << real << '\t' << gauss_noise << endl;
    // rng.gaussian(w_sigma * w_sigma);
  }

输出为

当把注释去掉,即为如下代码时

vector<double> x_data, y_data; // 数据
  for (int i = 0; i < N; i++)
  {
    double x = i / 100.0;
    x_data.push_back(x);
    double real = exp(ar * x * x + br * x + cr);
    double gauss_noise = rng.gaussian(w_sigma * w_sigma);
    y_data.push_back(real + gauss_noise);
    cout << real << '\t' << gauss_noise << endl;
    rng.gaussian(w_sigma * w_sigma);
  }

输出结果为

即优化得到了一个更好的结果,不知道为什么会这样。

举报

相关推荐

0 条评论