我有一個關於在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