2015-04-01 166 views
0

我想優化一些循環代碼,如下所示。我的代碼正在處理大矩陣,必須進行優化。請幫幫我 。如何在MATLAB中優化'for'循環

實施例之一:期待布爾結果:

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

矢量化:

m = r<0.3 | r>0.7; 

這給出了一個boolean結果。您可能需要將m轉換爲doublem = double(m);

+0

其良好的,但如果我們不會布爾答案,我們必須做什麼?例如,如果m(i,j)= 035 insted of m(i,j)= 1? – 2015-04-01 18:42:13

+0

@RezaGhanami'm * 0.035'? – Setsu 2015-04-01 18:49:12

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;