作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
注意:我已经问过这个问题,但由于“过于宽泛”而没有太多解释而被关闭。我看不出这个问题如何更具体(它针对特定用途处理特定库的特定类......),所以我认为它有点像“版主的错误”并再次提问。 ..
我想在稀疏矩阵上使用 Eigen 执行稀疏矩阵/矩阵乘法。我在标准 3 数组压缩行/列存储中处理的代码中已经定义了这些矩阵。
然后我想使用 Eigen::SparseMatrix 类作为这些数组的包装器(假设 Eigen 在内部使用这样的 3 数组存储)以避免在内存中重复矩阵。我想做如下事情:
Eigen::SparseMatrix smin0(n,m);
Eigen::SparseMatrix smin1(m,l);
Eigen::SparseMatrix smout(n,l);
smin0.set_innerPtr(myInnerPtr0);
smin0.set_outerPtr(myOuterPtr0);
smin0.set_valuePtr(myValuePtr0);
smin1.set_innerPtr(myInnerPtr1);
smin1.set_outerPtr(myOuterPtr1);
smin1.set_valuePtr(myValuePtr1);
smout=smin0*smin1;
int *myOutInnerPtr=smout.innerIndexPtr();
int *myOutOuterPtr=smout.outerIndexPtr();
double *myOutValuePtr=smout.valuePtr();
是否可能,如果可能,如何?
非常感谢
最佳答案
正如 ggael 指出的那样,您可以使用 Eigen::MappedSparseMatrix为此。
你不能只覆盖 SparseMatrix
的内部指针的原因是,当 SparseMatrix
释放它们时,这会导致问题,但你在不同的地方分配它们Eigen 的方式(以及 Eigen 如何在内部分配内存是您不应该在代码中真正依赖的实现细节)。
关于c++ - 如何将 Eigen::SparseMatrix 包装在预先存在的 3 标准压缩行/列数组上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26777017/
我是一名优秀的程序员,十分优秀!