2013-11-04 43 views
0

我有一個只包含0和1的矩陣。我想做一個嵌套循環,檢查矩陣中連續的0,並將距離打印出來。稍後我將使用距離來計算矩陣的點之間的距離。矩陣中0之間的最大距離 - 雙迴路

這裏是我的代碼和我的測試矩陣B.

B = [ 1  1  1  0  0  0  1 
0  0  0  1  1  1  1]; 


for i=1:2  
    for j=1:7  
    if B(i,j)==0 
     jtemp=j; 
     distance=0; 
     while B(i,jtemp)==0 
      jtemp=jtemp+1; 
      distance=distance+1; 
     end 
     fprintf('%0.0f,The distance is\n',distance) 
    end 
    end 
end 

當我運行這段代碼我得到的是這樣的:

3,距離
2,距離爲
1 ,距離爲
3,距離爲
2,距離爲
1,距離爲

所以我的問題是,爲什麼這個代碼不通過矩陣的行計算的連續0打印的距離

+1

什麼問題? – Dan

+0

問題是爲什麼它不能正常工作,例如在第一行它沒有與答案一起出現距離爲3 –

+0

您可以使用'diff'和'find'更簡單地做到這一點。 –

回答

1

此行爲是由於j(從1到7的連續通話,無論價值jtemp是)。你可以插入一個條件(if j<jtemp),告訴matlab不要進一步處理(continue),直到j再次匹配jtemp

for i=1:2 

    jtemp = 1; 

    for j=1:7 

     if j<jtemp 
      continue 
     end