【发布时间】:2022-01-10 06:48:26
【问题描述】:
我有一个矩阵 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);
【问题讨论】:
-
我认为文档对正在发生的事情非常清楚,应该很容易找到您想要的语法:mathworks.com/help/matlab/ref/min.html#d123e905216
-
如果有多个最小化值或只有一个,您是否需要所有索引对?例如,
[0.2 0.1; 0.1 0.3]的输出应该是什么? -
我确实需要多个,我似乎使用下面的评论让它工作,它没有给我输出我期望它们的确切位置,所以我仍在调查!抱歉不习惯使用stack over flow,下面的评论不是很清楚!
-
将用于多分钟的代码添加到原始问题