在特征中初始化矩阵

时间:2017-02-02 18:42:16

标签: c++ eigen

我正在尝试初始化4x4矩阵,然后通过函数调用将值赋给矩阵。这会产生错误;

EXC_BAD_ACCESS

我知道当我在内存中尝试访问不可用或未分配的位置时会发生此错误。但根据Eigen文档示例,this就是这样做的。

这是我的头文件初始化。

    MatrixX4d T;

这是我的实现文件函数调用。

MatrixX4d RobotArm::substitute(double theta, double alpha, double a, double d)
{
    RobotArm::T << cos(theta), -sin(theta), 0, a,
               (sin(theta)*cos(alpha)), (cos(theta)*cos(alpha)), -sin(alpha),   (-sin(alpha)*d),
               (sin(theta)*sin(alpha)),(cos(theta)*sin(alpha)), cos(alpha), (cos(alpha)*d),
               0, 0, 0, 1;
    cout << T;
    return T;
}

我做错了什么?感谢。

2 个答案:

答案 0 :(得分:0)

MatrixX4d T 

是半动态矩阵。

相反,

Matrix4d T

作品。

答案 1 :(得分:0)

如果您想将MatrixX4d用作4x4,请先将其调整为4x4。

T.resize(4, Eigen::NoChange);