c++ - 选择索引不连续的 Armadillo 子矩阵

标签 c++ python-3.x armadillo

我正在将 python 代码传递给 C++,在那里我找到了这样的 python 表达式:

J11 = dS_dVa[array([pvpq]).T, pvpq].real

在这里,J11dS_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/

相关文章:

python - 如何构建简单的神经网络来判断来自不同空间的两个嵌入是否属于同一类

c++ - 将对象参数作为 const 传递并读取它

c++ - Armadillo:矩阵乘法占用大量内存

c++ - Armadillo 中 find() 的补充索引

c++ - 纪元秒 (UTC) 的日期字符串

c++ - ROS C++ catkin 找不到我的自定义消息

c++ - 计算两个 uint8_t 变量之间差异的最快方法是什么?

c++ - 在将函数create_ll的返回类型更改为struct node *并显示为void之后,为什么链表的元素没有显示?

python - 将 python 中的字符串向后分成两部分

python - Python 3 无法登录 steam