Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 分割两个矩阵时的内存和时间问题_Performance_Matlab_Matrix_Linear Algebra_Sparse Matrix - Fatal编程技术网

Performance 分割两个矩阵时的内存和时间问题

Performance 分割两个矩阵时的内存和时间问题,performance,matlab,matrix,linear-algebra,sparse-matrix,Performance,Matlab,Matrix,Linear Algebra,Sparse Matrix,我在matlab中有两个稀疏矩阵 M1面积为9000万x1.8百万,M2面积为180万x1.8百万 现在我需要计算表达式 M1/M2 我花了一个小时。这正常吗?在matlab中有什么有效的方法可以克服这个时间问题吗。我的意思是,这是一个很大的过程,如果我进行多次迭代,那么它将持续花费1个小时。有什么建议吗?基于假设使用了共轭梯度法或卡茨马兹法等迭代方法,快速返回包络计算,插入大小使我相信一个小时不坏 由于被“反转”的矩阵的三对角性(如果不是显式的),这两种方法都将采用大量指令,接近“某个接近单

我在matlab中有两个稀疏矩阵

M1面积为9000万x1.8百万,M2面积为180万x1.8百万

现在我需要计算表达式

M1/M2

我花了一个小时。这正常吗?在matlab中有什么有效的方法可以克服这个时间问题吗。我的意思是,这是一个很大的过程,如果我进行多次迭代,那么它将持续花费1个小时。有什么建议吗?

基于假设使用了共轭梯度法或卡茨马兹法等迭代方法,快速返回包络计算,插入大小使我相信一个小时不坏

由于被“反转”的矩阵的三对角性(如果不是显式的),这两种方法都将采用大量指令,接近“某个接近单位的标量因子”乘以~9000乘以1.8e6乘以“收敛所需的迭代次数”。引号中这两个东西的乘积可能在50(最小值)到1000(最大值)之间。我挑选这些并不是为了让你的数学更好,这些都是我所期望的。如果假设每秒指令数为1e9条(这对内存访问等没有多大影响),则大约需要13分钟到4.5小时

因此,对于利用稀疏性的算法来说,它似乎处于合适的范围内

如果你知道它的结构,也许你自己能够更好地利用它,但可能不会太多

注意,这并不是说13分钟是可以实现的

编辑:一方面,我不确定使用了什么,但我假设使用迭代方法。也有可能使用直接方法。如果您正确利用稀疏性,这些方法对于稀疏系统可能非常有效。很有可能Matlab在默认情况下使用了这些,但是值得研究一下Matlab在您的案例中做了什么


在我有限的经验中,迭代法通常比直接法更受欢迎,因为系统的规模越来越大(你的系统越来越大)。我们的线性系统也是块三对角的,就像它们在图像处理中经常做的那样。

对于一般矩阵M1和M2,你可能无能为力。如果你知道矩阵的稀疏结构,你可以做很多事情。您还可以将迭代表示为更新,而不是解析完整答案。你能提供更多关于矩阵和你的迭代的细节吗?你正在处理一些相当大的实体。1小时听起来不错。能快点吗?当然能慢一点吗?当然可以。嗯,180万乘以180万,假设64位变量,那么
M2
的容量为23 TB,而
M1
和您的结果的容量为120 GB。它是一个逻辑矩阵吗?它更像是一个三对角矩阵matrix@LucaGeretti他说它们是稀疏矩阵,所以我怀疑
M1
M2
会占用那么多空间。