美文网首页
使用EIGEN实现曲线拟合

使用EIGEN实现曲线拟合

作者: Young1217 | 来源:发表于2018-10-17 14:25 被阅读0次
double polyeval(Eigen::VectorXd coeffs, double x) {
  double result = 0.0;
  for (int i = 0; i < coeffs.size(); i++) {result += coeffs[i]*pow(x, i);}
  return result;
}

Eigen::VectorXd polyfit(Eigen::VectorXd xvals, Eigen::VectorXd yvals, int order) {
  assert(xvals.size() == yvals.size());
  assert(order >= 1 && order <= xvals.size() - 1);
  Eigen::MatrixXd A(xvals.size(), order + 1);
  for (int i = 0; i < xvals.size(); i++) {
    A(i, 0) = 1.0;
  }
  for (int j = 0; j < xvals.size(); j++) {
    for (int i = 0; i < order; i++) {
      A(j, i + 1) = A(j, i) * xvals(j);
    }
  }
  auto Q = A.householderQr();
  auto result = Q.solve(yvals);
  return result;
}

Eigen::VectorXd xvals(6);
Eigen::VectorXd yvals(6);
xvals << 9.261977, -2.06803, -19.6663, -36.868, -51.6263, -66.3482;
yvals << 5.17,     -2.25,    -15.306,  -29.46,  -42.85,   -57.6116;
auto coeffs= polyfit(xvals,yvals,3);
std::cout<< "Y(16)=" << polyeval(coeffs,16) << endl;

相关文章

  • 使用EIGEN实现曲线拟合

    QR分解与最小二乘 Eigen解线性方程组 This excellent resource explains a ...

  • Ceres曲线拟合

    本文介绍如何使用Ceres库实现曲线拟合。 一、曲线拟合 所谓曲线拟合,就是给定一组x和y的值,它们大体上满足一条...

  • Eigen库使用报错

    参考资料: Eigen库使用报错 在Eigen库的使用过程在经常出现类似这样的问题: 原因是因为Eigen库使用了...

  • Eigen库使用指南

    Eigen库使用指南 1.模块和头文件 Core #include,包含Matrix和Ar...

  • 2021-01-09利用eigen矩阵基本操作

    头文件 #include #include

  • Eigen库使用

    Eigen是一个只有头文件的轻量级C++矩阵运算库,便于在移动设备或嵌入式设备使用。官方文档:http://eig...

  • Eigen库函数

    opencv与eigen的交互 eigen 与 matlab函数的对应关系:

  • 视觉SLAM常用的第三方库

    eigen eigen是一个线性代数运算库文件,用于矩阵和向量运算 sophus sophus是基于eigen写的...

  • eigen Dense矩阵拼接

    矩阵拼接报错: /usr/include/eigen3/Eigen/src/Core/Block.h:141: E...

  • Eigen矩阵库使用总结

    背景 最近接触到了矩阵库Eigen,在此记录一下使用中遇到的一些问题。 1. 块操作 M.block(a, b, ...

网友评论

      本文标题:使用EIGEN实现曲线拟合

      本文链接:https://www.haomeiwen.com/subject/zufrzftx.html