- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道有没有什么好的方法可以从 Eigen::SparseMatrix 中提取 block /ROI?更准确地说,我要提取的是内部 vector 。
我想做的是这样的:
typedef Eigen::SparseMatrix<double,Eigen::RowMajor> SpMat;
// Prepare some sparse matrix
SpMat spmat;
// Extract lines from it
const SpMat& row_i = spmat.innerVector(i);
const SpMat& row_j = spmat.innerVector(j);
// Some calculation with row_i and row_j...
根据我的测试,row_i
和 row_j
的数据是从 spmat
中复制 (!!) 的。然而,显然,它是低效的。内部 vector 的数据(尤其是row_i.m_data.m_values
& row_i.m_data.m_indices
)是原始数据(spmat.m_data.m_values
& spmat.m_data.m_indices
分别),所以应该有更聪明的方法。
我也许能够实现新方法来执行此操作,但这需要我深入挖掘源代码。所以我不想。
如有帮助,不胜感激!提前致谢。
最佳答案
您可以使用 c++11 auto
关键字将 row_i
和 row_j
声明为真正的读写表达式,或者使用正确的类型:
const auto row_i = spmap.innerVector(i); // C++11 version
const SpMat::InnerVectorReturnType row_i = spmap.innerVector(i); // C++98 version
此外,并不是说默认情况下 SparseMatrix 存储在主要列中,因此“内部 vector ”是一个列。如果要引用行,则必须使用行优先存储布局:
typedef Eigen::SparseMatrix<double,RowMajor> SpMat;
关于c++ - 在不复制的情况下从 Eigen::SparseMatrix 中提取 block /ROI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33387750/
这是一个晦涩难懂的问题,我真的不希望有人回答,但我有这个方法接受(并返回)一个 Eigen::SparseMatrix。我想把它放到 deal.ii 库中,有没有办法从 deal.ii/Eigen 复
我有一个常规矩阵(非稀疏),我想将其转换为 sparseMatrix (使用 Matrix 包)。有没有一个函数可以做到这一点,还是我需要做一堆循环? 前任。 > regMat regMat[3,5
我想用Matrix:::qr()创建的矩阵上的B<-as(A, "sparseMatrix")函数进行QR分解。我知道我可以使用Matrix:::qr.R()获得R矩阵。但是,我还需要Q矩阵。 Mat
关于 Mahout 的 SparseMatrix 类的简短问题: 有没有一种简单的方法(已经可以通过 Mahout 获得)来计算稀疏矩阵的密度? 我问这个问题是因为我正在运行一个标签传播算法,该算法是
我对此进行了很多研究,但找不到解决此问题的实用方法。我正在使用 scipy 创建 csr 稀疏矩阵,并希望从所有矩阵的等效矩阵中减去该矩阵。在 scipy 和 numpy 符号中,如果矩阵不是稀疏的,
我有一个巨大的矩阵,但很多条目都是空的。 所以我尝试使用 AVL 树的 vector ,其中 vector 的长度约为 207 并且每个 AVL 树有大约 110,000 个节点(总共 207 · 1
我想在 OpenCV 中制作一个稀疏矩阵。 我怎样才能对这个矩阵进行基本操作,例如: 从矩阵元素中放置或访问数据。 干杯 最佳答案 使用 C++ 接口(interface)可能更合适。请注意,文档 [
我需要设置 Eigen::SparseMatrix 的稀疏模式,我已经知道(我有唯一的排序列索引和行偏移量)。显然可以通过 setFromTriplets 但不幸的是 setFromTriplets
我使用的是 Eigen 矩阵框架和 SparseVector 库。我遇到了性能问题,我都需要它是稀疏 vector 点积。所以我推出了自己的 SparseMatrix 实现,希望它能以某种方式更快一点
假设我写了以下内容: func(Eigen::SparseMatrixBase & A){ for(int i = 0; i ::InnerIterator it(A,i);it;++it)
我有一个巨大的Eigen::SparseMatrix,我想向矩阵中的非零项添加一个标量。 也就是说,如果我有一个矩阵 A,其值 _ 表示稀疏矩阵中的 0 条目,即它永远不会插入。 1 _ 2
我有一个包含 100k 行和 20M 列的 pyspark.mllib.linalg.SparseMatrix 。在 PySpark 中将其保存为稀疏矩阵的最佳格式是什么? 我发现另一篇文章的主题与一
我正在尝试计算以下内容: A = X^t * X我正在使用 Eigen::SparseMatrix 并在 transpose() 操作中得到一个 std::bad_alloc 错误: Eigen::S
根据 Eigen documentation ,我希望以下内容起作用: #include "Eigen/Dense" #include "Eigen/Sparse" SparseMatrix myma
我正在尝试初始化 Eigen::SparseMatrix A通过使用 malloc像这样 A.valuePtr() = static_cast(std::malloc(nnz*sizeof(T)));
我正在尝试为线性系统编写求解器,来自 Matlab/NumPy 等,我发现 Eigen 的类型有点受限。 我当前的问题解决了这个问题: D * DD + S 在哪里D和 DD类型为 Eigen::Di
由于在线文档和示例很少,我无法弄清楚如何将 Eigen::SparseMatrix 转换为 cuSparse。对于稠密矩阵,将 cublas 的 Eigen 转换为 CUDA 相当简单 Eigen::
我的稀疏矩阵数据已经在 CSR format 中了,即:我已经有非零值的数据(以 double[] 的形式),行和列索引(均以 int[] 的形式) 的非零值。 我的问题是,如何将它们直接分配给特征库
我想知道有没有什么好的方法可以从 Eigen::SparseMatrix 中提取 block /ROI?更准确地说,我要提取的是内部 vector 。 我想做的是这样的: typedef Eigen:
注意:我已经问过这个问题,但由于“过于宽泛”而没有太多解释而被关闭。我看不出这个问题如何更具体(它针对特定用途处理特定库的特定类......),所以我认为它有点像“版主的错误”并再次提问。 .. 我想
我是一名优秀的程序员,十分优秀!