1. 程式人生 > >MATLAB 使用矩陣過程中常見錯誤

MATLAB 使用矩陣過程中常見錯誤

1)>>a =


     3     4    80
     5     7     5

     4    99     0

>> for i=1:3
[u,v]=find(a==max(a(:,i)))%本意是找到a中每列的最大值,並將其用255代替
a(u,v)=255
 end

>>a =


     3     4    80
   255   255   255
   255   255   255

解釋:出現此結果的原因:find中用的是a,每一次迴圈會找到可能幾個跟max(a(:,i))相等的值。

2)>>for i=1:3
[u,i]=find(a(:,i)==max(a(:,i)))%將上述錯誤之處改成了a(:,i),本意是找到a中每列的最大值,並將其用255代替
a(u,i)=255
 end

>>a =


   255     4    80
   255     7     5
   255    99     0

結果仍然錯誤,為什麼?

3)>> for i=1:3
 aa=a(:,i)
[u,v]=find(aa==max(aa))
a(u,i)=255;
 end

>>a =


     3     4   255
   255     7     5
     4   255     0

這種做法才得到了想要的結果。