当您处理可以跨越一个非常大的矩阵的科学计算时,八度计算太慢了,甚至只是迭代。我必须对其进行矢量化以加快计算速度。
通过以下操作对 1xn 矩阵进行矢量化很容易
for i = 1:n
if (a(i) > 5)
a(i) -= 20
endif
endfor
https://octave.org/doc/v4.0.1/Basic-Vectorization.html
但是当矩阵变为 nxm 时,我没有任何线索。我的示例代码如下所示。
segs = 1000000;
r_int = 100;
r_ot = 2000;
x = linspace (0, 1000, segs);
y = linspace (0, -1000, segs);
[xx, yy] = meshgrid (x, y);
circ = xx.*yy;
circ_matrix = zeros(segs,segs);
#this needs vectorization
for j = 1:segs
for i = 1:segs
if((r_int<=circ(i,j)) &&(circ(i,j)<=r_ot))
circ_matrix(i,j)=1;
endif;
endfor;
endfor;
我已经标记了需要向量化的代码
尝试了一些事情:
circ_matrix((r_int<=circ) &&(circ<=r_ot))=1;
但没有工作