用于求解Ax = b中非常大的稀疏矩阵的反斜杠

时间:2015-07-16 11:49:10

标签: matlab code-generation sparse-matrix backslash

在我的代码中,每次步骤稀疏矩阵A的构建如下:

1< DX <120000

A = sparse(i,j,s,DX,DX,6*DX)

b = (1,DX)

我正在处理的问题是一种离散化问题。我有最多120000个节点。这些节点中的每一个都有特殊的字符,我只选择符合我标准的节点。这些选择的数量是DX,完全取决于物理过程。

我在x = A\b中使用反斜杠。但随着A的大小变得非常大,计算时间会急剧增加(超过10e5时间步长(DX > 6e4)。

据我所知,反斜杠操作已在MATLAB中进行了很好的优化,但我想知道:

  1. 使用codegen并将代码转换为C是否有意义?

  2. 是否有人知道替代方法而不是反斜杠,因此计算时间减少(可能是迭代方法)?

1 个答案:

答案 0 :(得分:2)

虽然x = A\b适用于许多系统,但您可能遇到导致速度下降的内存问题。或者,MATLAB具有许多内置函数,用于迭代求解稀疏矩阵的Ax = b,例如pcq()bigcg()cgs()等。请参阅MATLAB Documentation on interative methods for solving systems of linear equations < / p>