由于 matlab 在执行 for 循环时很慢,我通常避免对所有代码进行 for 循环,并将它们转换为矩阵计算,这样会很快。但这里有一个问题我找不到聪明的方法:
我有anxn矩阵
A=[a1,a2,a3,...,an],
这里 a1,a2,a3....an 是矩阵的列。
另一个 nxn 矩阵
B=[b1,b2,b3,...,bn],
同样 b1,b2,b3... 也是 B 的列。
还有anxn矩阵M。
我想计算nxn矩阵
C=[c1,c2,c3,...,cn],
thus (M+diag(ai))*ci = bi.
即
ci = (M+diag(ai))\bi.
我知道没有 for 循环的一种方法是:
C(:)=( blkdiag(M)+diag(A(:)) )\B(:).
但这会做太多的计算而不是需要。
有什么聪明的解决方案吗?您可以假设计算中没有奇点问题。