特征:稀疏密集乘积到普通C ++数组

时间:2013-01-02 19:11:56

标签: c++ matrix product eigen

我遇到这种情况: m是NxN稀疏矩阵,p是普通C ++向量,包含NxN矩阵。 我想制作产品m * p并将结果存储在一个普通的C ++数组中,当然是以密集格式存储。

 
  SparseMatrix  m; 
  double*p;
  Map mp(p,dim1,dim2);
  SparseTimeDenseProduct< Eigen::SparseMatrix, Eigen::Map< Eigen::Matrix< double, -1, -1> > > r = m*mp;

我有这个代码,但我不知道是否正确。如果是正确的,我不知道如何“”提取“”SparseTimeDenseProduct的普通数组。我该怎么办?

1 个答案:

答案 0 :(得分:4)

无需处理Eigen的内部课程。只需:

SparseMatrix<double> A(dim1,dim2);
double* p, res;
Map<const MatrixXd> mp(p,dim2,dim3);
Map<MatrixXd> mres(res,dim1,dim3);
mres = A * mp;