本征样条模块断言
Eigen Spline module Assertion
我在 Eigen 中使用样条模块,当我将 Spline<double, 1>
的类型设置为成员变量时断言失败。
这是一个例子,
#include "Eigen/eigen"
#include "unsupported/Eigen/splines"
using namespace Eigen;
class Spline1d
{
Spline<double, 1> spl1d;
public:
~Spline1d() {};
Spline1d() {};
Spline1d(const MatrixXd &input) {
spl1d = SplineFitting<Spline<double, 1> >::Interpolate(input.row(1), 1, input.row(0));
}
};
int main()
{
MatrixXd vals(2, 5);
vals << 1.0, 2.0, 3.0, 4.0, 5.0,
1.0, 2.0, 3.0, 4.0, 5.0;
// Spline1d spl(vals); // case 1
Spline<double, 1> spl1d = // case 2
SplineFitting<Spline<double, 1>>::Interpolate(vals.row(1), 1, vals.row(0));
return 0;
}
评论case 1
,使用case 2
,效果很好。
但是注释case 2
,使用case 1
,失败了,是运行时间错误。
这是命令行中的错误信息,
Assertion failed: v == T(Value), file d:\onedrive\documents\codes\library\eigen\
src/Core/util/XprHelper.h, line 53
情况 2 不是赋值,而是构造函数。
将您的案例 1 更改为
Spline1d(const MatrixXd &input)
: spl1d(SplineFitting<Spline<double, 1> >::Interpolate(input.row(1), 1, input.row(0))){
}
它会生成。
我在 Eigen 中使用样条模块,当我将 Spline<double, 1>
的类型设置为成员变量时断言失败。
这是一个例子,
#include "Eigen/eigen"
#include "unsupported/Eigen/splines"
using namespace Eigen;
class Spline1d
{
Spline<double, 1> spl1d;
public:
~Spline1d() {};
Spline1d() {};
Spline1d(const MatrixXd &input) {
spl1d = SplineFitting<Spline<double, 1> >::Interpolate(input.row(1), 1, input.row(0));
}
};
int main()
{
MatrixXd vals(2, 5);
vals << 1.0, 2.0, 3.0, 4.0, 5.0,
1.0, 2.0, 3.0, 4.0, 5.0;
// Spline1d spl(vals); // case 1
Spline<double, 1> spl1d = // case 2
SplineFitting<Spline<double, 1>>::Interpolate(vals.row(1), 1, vals.row(0));
return 0;
}
评论case 1
,使用case 2
,效果很好。
但是注释case 2
,使用case 1
,失败了,是运行时间错误。
这是命令行中的错误信息,
Assertion failed: v == T(Value), file d:\onedrive\documents\codes\library\eigen\
src/Core/util/XprHelper.h, line 53
情况 2 不是赋值,而是构造函数。
将您的案例 1 更改为
Spline1d(const MatrixXd &input)
: spl1d(SplineFitting<Spline<double, 1> >::Interpolate(input.row(1), 1, input.row(0))){
}
它会生成。