我正在编写包含此for
循环
for i = 1:17
for j = 1:17
if M(i,j,1) < d/2 && M(i,j,2) < d/2 && M(i,j,1) > -d/2 && M(i,j,2) > -d/2
I = I0*(w0/w)^2*exp(-2*(M(i,j,1).^2 + M(i,j,2).^2)/w^2);
else
I = 0;
end
end
end
其中M
矩阵包含每个位置的(x,y)
坐标(i,j)
前:
(x1,y1) (x2,y1) (x3,y1)
(x1,y2) (x2,y2) (x3,y2)
(x1,y3) (x2,y3) (x3,y3)
当我执行此代码时,I
和i
的每个组合都会获得j
的值,但我想将这些结果放在矩阵中。
你会怎么做?
答案 0 :(得分:0)
简单,不要用于循环:
I = I0*(w0/w)^2*exp(-2*(M(:,:,1).^2 + M(:,:,2).^2)/w^2);
mask = abs(M(:,:,1)) < d/2 & abs(M(:,:,2)) < d/2;
I(~mask) = 0;
完成!
否则,I(i,j)
将使元素可以存储在矩阵中。但是,建议在速度和清晰度方面采用上述解决方案。