我有一个特征稀疏矩阵,我想将它与一个向量相乘。但是,由于整个事物的设计方式,我的矢量存储在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对象的最有效方法是什么?
答案 0 :(得分:1)
您可以将Eigen::Map
用于此目的:
VectorXd res = some_mat * VectorXf::Map(vec, size);
请注意,Map
对象是可读写的,因此res
也可以是Map
。