在我的代码中,每次步骤稀疏矩阵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中进行了很好的优化,但我想知道:
使用codegen并将代码转换为C是否有意义?
是否有人知道替代方法而不是反斜杠,因此计算时间减少(可能是迭代方法)?
答案 0 :(得分:2)
虽然x = A\b
适用于许多系统,但您可能遇到导致速度下降的内存问题。或者,MATLAB具有许多内置函数,用于迭代求解稀疏矩阵的Ax = b,例如pcq()
,bigcg()
,cgs()
等。请参阅MATLAB Documentation on interative methods for solving systems of linear equations < / p>