如何使用for循环的结果填充矩阵

时间:2014-07-02 15:08:32

标签: matlab for-loop

我正在编写包含此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)

当我执行此代码时,Ii的每个组合都会获得j的值,但我想将这些结果放在矩阵中。

你会怎么做?

1 个答案:

答案 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)将使元素可以存储在矩阵中。但是,建议在速度和清晰度方面采用上述解决方案。