如何优化' for'在MATLAB中循环

时间:2015-04-01 18:29:28

标签: matlab vectorization

我想优化一些循环代码,如下所示。我的代码使用大矩阵,必须进行优化。请帮帮我。

示例一:期待布尔结果:

m=zeros(100,100);
r=rand(100,100);
for i=1:100
    for j=1:100
        if(r(i,j)<0.3 || r(i,j)>0.7)
            m(i,j)=1;
        else
            m(i,j)=0;
        end
    end
end

示例二:期待非布尔结果

m=zeros(100,100);
r=rand(100,100);
for i=1:100
    for j=1:100
        if(r(i,j)<0.3 || r(i,j)>0.7)
            m(i,j)=0.035;
        else
            m(i,j)=0;
        end
    end
end

2 个答案:

答案 0 :(得分:2)

矢量化:

m = r<0.3 | r>0.7;

这会产生boolean结果。您可能希望将m转换为doublem = double(m);

答案 1 :(得分:0)

示例1:Luis Mendo's回答

r=rand(100,100);
m = r<0.3 | r>0.7;

示例2:

m(100,100) = 0;
r=rand(100,100);
m(r<0.3 | r>0.7) = 0.035;