1

私はこの状況を持っています: m は NxN 疎行列で、p は NxN 行列を含む単純な C++ ベクトルです。積 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 のプレーン配列を「抽出」する方法がわかりません。どうすればいいですか?

4

1 に答える 1

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;
于 2013-01-03T09:34:11.043 に答える