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

Eigen: Sparse-Dense Product to Plain C++ Array

本文关键字:c++ 数组 特征      更新时间:2023-10-16

我有这样的情况: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的普通数组。我该怎么做呢?

无需处理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;