wendongxia
water_shine
2017-10-08 07:29

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
这种做法才得到了想要的结果。

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答