我想计算一些大块对角稀疏矩阵的逆。 行数和列数略多于50,000。 这些块是12乘12并且是稀疏的(27个非零元素)。
我试图计算整个矩阵的逆(使用求解)。这是不可能的,整个矩阵太大了。
之后,我使用for循环。在每次迭代中,我取出一个块,计算其反转并将其放回。
该方法有效,但我需要大约5分钟。 我想知道是否有更快的方法。
非常感谢提前。
答案 0 :(得分:0)
你如何以50k x 50k矩阵结束?
反转12 x 12简单快捷。它是导致缓慢或访问矩阵对象的反转吗?
你打算怎么处理大逆转?
答案 1 :(得分:0)
我通过代码更快地完成了代码:
1)将块对角矩阵的逆存储在列表中,而不是“将它们放回大矩阵中”。最后,我使用bdiag()命令从列表中构建了整个矩阵。 2)通过考虑块对角矩阵不是一个接一个,而是以大约10个为一组 因此,我重复计算由10个块对角矩阵组成的子矩阵的逆矩阵。
在最初的问题中,我没有说我不仅仅采用每个块的逆,而是我还对每个块应用了一些转换。现在,对整个块对角矩阵进行转换,这也节省了时间。