Eigen中用户定义的结构数组

时间:2012-03-01 09:43:57

标签: c++ linear-algebra eigen

我想知道是否有可能将具有更复杂数据的数组用作Eigen中的向量或矩阵。

示例:

struct data
{
    /* some members...*/
    double numericValue;
    /* more members...*/
};
std::vector<data*> dataset;

是否可以告诉eigen如何访问 numericValue 成员并使用 dataset 进行计算? 我在文档中找到了 map 类,但没有找到所需的功能。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的问题,但你有结构化数据,你有交错元素,你想要组合成一个Vector或Matrix,以便对它进行特征操作。

如果您对此感兴趣,Map type确实是您的朋友。以下表达式应该为您提供您想要的(未经测试的):

typedef Map<VectorXd, 0, InnerStride<sizeof(data)/sizeof(double)> > MyMap;
MyMap map( &dataset[0].numericValue, dataset.size() );

现在你可以,例如做点什么

map *= 2.0;

按顺序将所有numericValue成员乘以2.0。