大型稀疏矩阵如何提取其中部分元素

twtian 发布于 2016/10/20 22:11
阅读 283
收藏 1
稀疏矩阵我用的是Eigen::SparseMatrix存储,数据尺寸为28000X28000,非零元素大概再100万左右,现在想提取其中某些元素,元素的行列值存储在一维数组中,尺寸为2500,也就是最后需要的数据规模为25000X25000,也是用稀疏矩阵存储,如何设计算法将我需要的数据提取出来啊?我试过了Map set等效率都很低,求大神帮我解答一下
加载中
0
k
kchr

从一种稀疏矩阵格式,转换成另一种稀疏矩阵格式?实在猜不透你这么做的目的是什么。

至于速度,按列计算 SOA 和按行计算 AOS 的速度相差个 70 - 80 倍,也是有的。

twtian
twtian
回复 @kchr : 多谢,想了很久好像是没有有效的算法解决这个问题,只能循环一个个找
k
kchr
要考虑实际问题的性质就是无法优化的可能啊。 比如一幅牌全部正面朝下,找黑桃 K,什么已知条件都没有,那只能一张一张地翻开看,碰运气。 如果只是从 28000 那个矩阵里随机取出,放到 25000 矩阵里面,这个是没什么更有效的方法的。
twtian
twtian
但是元素提取仍然没有想到比较好的算法
twtian
twtian
需要提取出来解线性方程组,现在已经解决了,吧debug改成release程序可以从四分钟变为一秒钟,请原谅我是个编程菜鸟,现在整个程序和matlab时间是一样的了
0
twtian
twtian
不知道为何Matlab这么快,这个问题Matlab 在0.1秒时间内就可以解出来,包括解方程组,我的光吧元素提取出来就需要四分钟T_T
0
寻梦2012
寻梦2012
用R试试呢?
0
寻梦2012
寻梦2012
是在不行用SPark
返回顶部
顶部