我有一个关于在Octave上运行SOR算法的学校项目,但是我的效率很低。所以我有这段代码:矢量化矩阵乘法
for ii=1:n
r = 1/A(ii,ii);
for jj=1:n
if (ii!=jj)
A(ii,jj) = A(ii,jj)*r;
end;
end;
b(ii,1) = b(ii,1)*r;
x(ii,1) = b(ii,1);
end;
我该如何实现这一点?我的第一次尝试是这样的:
for ii=1:n
r = 1/A(ii,ii);
A(find(eye(length(A))!=1)) = A(find(eye(length(A))!=1))*r;
b(ii,1) = b(ii,1)*r;
x(ii,1) = b(ii,1);
end;
但我不确定它有多大的帮助。有没有更好的和/或更有效的方法来做到这一点?
谢谢!
你能解释代码实际在做什么吗? (一些矩阵分解可能......) – tashuhka
它创建了SOR算法的迭代矩阵。 – dccarmo
发布了一个基于bsxfun的解决方案[here](http:// stackoverflow。com/a/26128876/3293881)如果你想看看! – Divakar