我試圖找到一些方法來運行這個腳本,但它需要大量的處理時間,所以我決定嘗試「矢量化」它們,但不成功。如何在matlab中將這幾個循環向量化?
B = sparse(NxNy,NxNy)
Ny=246;
Nx=190;
for n1y = 1:Ny
for n1x = 1:Nx;
n1 = (n1y-1)*Nx+n1x;
for n2y = 1:Ny
for n2x = 1:Nx;
n2 = (n2y-1)*Nx+n2x;
dx12 = xax(n1x) - xax(n2x);
dy12 = xay(n1y) - xay(n2y);
r12 = sqrt(dx12^2+dy12^2);
B(n1,n2) = 0.8 * exp((-1/2)*(r12/300));
end
end
end
end
我試圖向量化n1y,和N1x,n2y和2NX,但與載體Matlab的交易,不同大小的向量不能被執行(計算n1和n2),因此,我停了下來。
大小(XAX)= 190
大小(XAY)= 246
給出xax,xay和B的大小。你在循環之前初始化了B =零(b1,b2)嗎? – divanov
對不起,我忘了,xax(1,190)和xay(1,246) 我用稀疏函數初始化B: B =稀疏(NxNy,NxNy) –
也在(n2y-1)之後加分號* Nx + n2x - 輸出到控制檯顯着減慢執行速度。 – divanov