简体   繁体   中英

Matlab matrix minimum value

I have aa matrix Number which contains

0.2728    0.2304    0.2008    0.1900    0.2008    0.2304    0.2728
0.2304    0.1786    0.1391    0.1233    0.1391    0.1786    0.2304
0.2008    0.1391    0.0843    0.0567    0.0843    0.1391    0.2008
0.1900    0.1233    0.0567    0.0100    0.0567    0.1233    0.1900
0.2008    0.1391    0.0843    0.0567    0.0843    0.1391    0.2008
0.2304    0.1786    0.1391    0.1233    0.1391    0.1786    0.2304
0.2728    0.2304    0.2008    0.1900    0.2008    0.2304    0.2728

I am trying to find the minimum value (or values if there are equal mins). I have tried

[min_val,idx]=min(number);

[row,col]=ind2sub(size(number),idx);

I am getting row 4 which is right but col 1 which clearly not the min, min is in the center. When I print min(number) I am give the whole of row 4 so I also tried

[min_val,idx]=min(min(number));

[row,col]=ind2sub(size(number),idx);

But i's giving the same result. I'm not really sure what's going on here. Any help would be appreciated!

Looks like you can use min and ind2sub to achieve your expected output:

matlab:1> number = [0.2728 0.2304 0.2008 0.1900 0.2008 0.2304 0.2728; 0.2304 0.1786 0.1391 0.1233 0.1391 0.1786 0.2304; 0.2008 0.1391 0.0843 0.0567 0.0843 0.1391 0.2008; 0.1900 0.1233 0.0567 0.0100 0.0567 0.1233 0.1900; 0.2008 0.1391 0.0843 0.0567 0.0843 0.1391 0.2008; 0.2304 0.1786 0.1391 0.1233 0.1391 0.1786 0.2304; 0.2728 0.2304 0.2008 0.1900 0.2008 0.2304 0.2728]
number =

   0.272800   0.230400   0.200800   0.190000   0.200800   0.230400   0.272800
   0.230400   0.178600   0.139100   0.123300   0.139100   0.178600   0.230400
   0.200800   0.139100   0.084300   0.056700   0.084300   0.139100   0.200800
   0.190000   0.123300   0.056700   0.010000   0.056700   0.123300   0.190000
   0.200800   0.139100   0.084300   0.056700   0.084300   0.139100   0.200800
   0.230400   0.178600   0.139100   0.123300   0.139100   0.178600   0.230400
   0.272800   0.230400   0.200800   0.190000   0.200800   0.230400   0.272800

matlab:2> [min_val, idx] = min(number(:))
min_val = 0.010000
idx = 25
matlab:3> [row, col] = ind2sub(size(number), idx)
row = 4
col = 4

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM