如何在我自己的C 中正确使用矩阵(EIGEN库)
How to correctly use a matrix (Eigen library) in my own class in C++?
我真的试图解决这个问题,我在stackoverflow上读了很多QA,但以某种方式没有任何帮助。
我正在尝试从特征图库中实现自己的矩阵和向量。我正在使用GNU GCC编译器。
使用Code ::块。这是我的意思的简单示例,但这不是确切的代码,因为我使用了更多的矩阵和向量以及其他尺寸(4x4矩阵,2x4矩阵,4x1载体和2x1矢量(:
class MYCLASS{
private:
VectorXd x;
MatrixXd A;
public:
MYCLASS(double, double, double, double);
double get_matval();
};
MYCLASS::MYCLASS(double deltaT, double q_var, double r1_var, double r2_var){
x_m(0)=q_var;
x_m(1)=r1_var;
x_m(2)=r2_var;
x_m(3)=0.0;
A(0,0)= deltaT;
A(0,1)= 0.0;
A(1,0)= 0.0;
A(1,1)= 0.0;
}
double MYCLASS::get_matval(){
return A(0,0);
}
1.当我创建一个myllass的对象时,如下:
MYCLASS myobject(10, 0.5, 0.1, 0.75);
==>编译很好,但是当它运行时,该程序以以下确切描述崩溃(请记住,我还有其他矩阵和向量(:
断言失败:索引> = 0&&索引<大小((,文件 f:......../eigen/src/core/densecoeffsbase.h,第425行
此应用程序已要求运行时终止它 不寻常的方式。请联系...
进程返回3(0x3(执行时间:2.131 S
2.如果我然后放在构造函数的开头:
MYCLASS::MYCLASS(double deltaT, double q_var, double r1_var, double r2_var){
VectorXd x(4);
MatrixXd A(2,2);
x_m(0)=q_var;
x_m(1)=r1_var;
...and so on...
==>然后在构造对象==>无错误
时==>但是当我想使用函数get_matval访问(0,0(时,如下:
MYCLASS myobject(10, 0.5, 0.1, 0.75);
double myvar = myobject.get_matval();
...它再次使用相同的错误消息崩溃。
你们可以帮忙吗?
即使您已经找到了解决方案,这是如何正确初始化(有限数量的(eigen矩阵:
MYCLASS::MYCLASS(double deltaT, double q_var, double r1_var, double r2_var)
: x(4), A(2,2) { // use initializer list to construct x and A
x << q_var, r1_var, r2_var, 0.0;
A << deltaT, 0.0, 0.0, 0.0;
}
相关文章:
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 将矩阵乘以我自己的输入的向量
- 如何正确包含我自己的标头?
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- 预期'while'或预期'}' 之前回答是,但我自己无法修复
- Eigen:我应该使用对齐地图进行密集计算吗?
- 为什么__builtin_popcount比我自己的比特计数功能慢?
- 在wxWidgets的事件中包含我自己的数据的最佳方法是什么?
- 如何在我自己的staticLib中使用staticLib
- 在我自己的堆栈中实现top的问题
- 尝试检查输入的文本与我自己的自定义答案
- 如何在我自己的类中重载"+"和"<<"运算符
- C++:我自己类的动态数组
- 如何在 C++ 中使用我自己的类中的库?
- 如何链接我自己的 .so 文件而不是操作系统捆绑包 .so 文件?
- 如何构建默认使用我自己的构建libc ++的clang?
- 访问另一个类(系统)的非静态字段,就好像它是我自己的字段一样 - 优雅地
- 分发我自己的程序的几个问题
- 如何在我自己的C 中正确使用矩阵(EIGEN库)
- 使用Eigen的性能比使用我自己的类更差