if h(i,j)==a1(i,j) e(i,j)=a(i,j); elseif h(i,j)==b1(i,j) e(i,j)=b(i,j); elseif h(i,j)==c1(i,j) e(i,j)=c(i,j); else h(i,j)==d1(i,j) e(i,j)=d(i,j); end 對這一段程式仔細分析,我沒有仔細分析前面的程式,但可以猜測以下,h(i,j)肯定會和a1(i,j)、b1(i,j)、c1(i,j)、d1(i,j)中的某一個相等,這樣當h(i,j)和a1(i,j)、b1(i,j)、c1(i,j)不相等的時候,就會執行到最後一條else語句else h(i,j)==d1(i,j) e(i,j)=d(i,j);這時候ans=1;就會出現了。也就是Matlab把h(i,j)==d1(i,j)當做是一條單獨的語句,而不是判斷條件。究其原因,就是,if-elseif-else-end最後一個else是不用判斷條件的,前面的條件都不滿足就會執行else後的語句。再加上,用來計算的矩陣是由rand隨機生成的,這樣,就可以很好的解釋為什麼有時多,有時少,數量不確定的現象了。所以修改的辦法是:1,把h(i,j)==d1(i,j)刪除;2,把else改成elseif。對於這個程式,我感覺用if語句還是比較合理的,用switch-case可以用,但是它不適合這樣的分支條件
if h(i,j)==a1(i,j) e(i,j)=a(i,j); elseif h(i,j)==b1(i,j) e(i,j)=b(i,j); elseif h(i,j)==c1(i,j) e(i,j)=c(i,j); else h(i,j)==d1(i,j) e(i,j)=d(i,j); end 對這一段程式仔細分析,我沒有仔細分析前面的程式,但可以猜測以下,h(i,j)肯定會和a1(i,j)、b1(i,j)、c1(i,j)、d1(i,j)中的某一個相等,這樣當h(i,j)和a1(i,j)、b1(i,j)、c1(i,j)不相等的時候,就會執行到最後一條else語句else h(i,j)==d1(i,j) e(i,j)=d(i,j);這時候ans=1;就會出現了。也就是Matlab把h(i,j)==d1(i,j)當做是一條單獨的語句,而不是判斷條件。究其原因,就是,if-elseif-else-end最後一個else是不用判斷條件的,前面的條件都不滿足就會執行else後的語句。再加上,用來計算的矩陣是由rand隨機生成的,這樣,就可以很好的解釋為什麼有時多,有時少,數量不確定的現象了。所以修改的辦法是:1,把h(i,j)==d1(i,j)刪除;2,把else改成elseif。對於這個程式,我感覺用if語句還是比較合理的,用switch-case可以用,但是它不適合這樣的分支條件