我正在将 python 代码传递给 C++,在那里我找到了这样的 python 表达式:
J11 = dS_dVa[array([pvpq]).T, pvpq].real
在这里,J11
和 dS_dVa
是稀疏矩阵,pvpq
是一个索引数组,可以按任何增长顺序排列(即 1、2、5、7、9)
查看文档 here我推断如下:
arma::Row<int> pvpq(calc->pqpv);
arma::sp_mat J11 = arma::real(dS_dVa.submat(pvpq, pvpq));
哪里calc->pqpv
类型为 std::vector<int>
.
但是 GCC 编译器说:
engine.h:2436: error: no matching function for call to ‘arma::SpMat<std::complex<double> >::submat(arma::Row<int>&, arma::Row<int>&)’
arma::sp_mat J11 = arma::real(dS_dVa.submat(pvpq, pvpq));
^
我该如何解决这个问题?
它是否告诉我稀疏矩阵没有 submat
方法?
最佳答案
Armadillo 只支持连续形式的子矩阵 View 。请参阅 sp_mat 中的注意事项部分文档。
关于c++ - 选择索引不连续的 Armadillo 子矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45401725/