10Eigen::VectorX<typename D::Scalar> polyfit(
const Eigen::DenseBase<D> &x,
const Eigen::DenseBase<D> &y,
int order)
12 if (x.size() != y.size())
13 return Eigen::VectorX<typename D::Scalar>();
15 if (order < 1 || order > x.size() - 1)
16 return Eigen::VectorX<typename D::Scalar>();
18 Eigen::MatrixX<typename D::Scalar> A(x.size(), order + 1);
20 for (ptrdiff_t i = 0; i < x.size(); i++) {
24 for (ptrdiff_t j = 0; j < x.size(); j++) {
25 for (ptrdiff_t i = 0; i < order; i++) {
26 A(j, i + 1) = A(j, i) * x(j);
30 auto Q = A.householderQr();
31 return Q.solve(y.derived());
36Eigen::MatrixX<typename D::Scalar>
polyval(
const Eigen::DenseBase<D> &coeffs,
const Eigen::DenseBase<D> &x) {
37 Eigen::MatrixX<typename D::Scalar> m(x.rows(), x.cols());
38 for (ptrdiff_t i = 0; i < coeffs.size(); i++) {
39 m.derived().array() += coeffs(i)*x.derived().array().pow(i);
Basic namespace.
Definition h5base.h:29
Eigen::MatrixX< typename D::Scalar > polyval(const Eigen::DenseBase< D > &coeffs, const Eigen::DenseBase< D > &x)
Evaluate a polynomial.
Definition h5polyfit.h:36