Matlab矩阵最小值

Matlab matrix minimum value

我有一个包含

的矩阵 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

我正在尝试找到最小值(如果分钟数相等,则为最小值)。 我试过了

[min_val,idx]=min(数);

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

我得到的第 4 行是正确的,但第 1 列显然不是最小值,最小值在中间。 当我打印 min(number) 时,我给出了整个第 4 行,所以我也尝试了

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

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

但我给出了相同的结果。我不太确定这里发生了什么。如有任何帮助,我们将不胜感激!

用于获取多个最小值位置的代码。

[min_val, idx] = min(number(:));%finds minimum value of n
mins = number==min_val;%logical array that gives 1 where number is at 
its minimum

ind1 = zeros();
ind2= zeros();
for i = 1:length(x)
    for j = 1:length(y)
        if min_val(i,j) == 1
            ind1 = [ind1;i];% indcies where mins = 1 
            ind2 = [ind2;j];
        
        end
    end
end
ind1 = ind1(ind1~=0);

看起来您可以使用 min and ind2sub 来实现您的预​​期输出:

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