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
我有一个包含
的矩阵 Number0.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