将特征稀疏矩阵与C数组相乘

时间:2014-11-25 19:26:01

标签: c++ eigen

我有一个特征稀疏矩阵,我想将它与一个向量相乘。但是,由于整个事物的设计方式,我的矢量存储在STL矢量容器中。所以,我有类似的东西:

std::vector<float> values;
Eigen::SparseMatrix<float> some_mat;

// fill the matrix and vector
....
float * vec = &values[0];

现在有办法做一些事情:

some_mat * vec;

不将矢量复制到特征向量对象中。如果没有办法绕过副本,那么将STL向量或C数组复制到特征VectorXf对象的最有效方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以将Eigen::Map用于此目的:

VectorXd res = some_mat * VectorXf::Map(vec, size);

请注意,Map对象是可读写的,因此res也可以是Map