Matlab:矩阵的最小值

时间:2014-11-30 18:23:38

标签: matlab

我需要找到整个矩阵的最小值,它是'坐标'。 在像

这样的矩阵中
matrix = 8 7 6 5  
         4 3 2 1

最小值为(2,4)时的1。

2 个答案:

答案 0 :(得分:3)

这可以通过使用find来完成,您可以使用它的两个输出版本。因此,您要做的是在矩阵中搜索与矩阵中的最小值匹配的行和列位置。

因此:

[row, col] = find(matrix == min(matrix(:)));

rowcol将包含matrix的行和列位置,它们等于此最小值。请注意,我必须通过matrix(:)将矩阵展开为向量。原因是因为如果你在矩阵上使用min,它默认会给你每列的最小值。因为你想在整个矩阵中找到最小值,你可以将它转换为单个向量,然后在整个向量中找到最小值。

请注意,这会返回所有与最小值匹配的行和列位置,因此实际上会将rowcol作为N x 1列向量,Nmatrix中等于最小值的元素总数。

如果您只想要一个匹配,只需将1作为第二个参数附加到find

[row, col] = find(matrix == min(matrix(:)), 1);

答案 1 :(得分:0)

另一个适用于任意数量维度的张量的选项是使用带有线性索引的min,然后使用ind2sub来恢复精确的索引(如果需要)。

[~, nIndex] = min(matrix(:));
[nIndex1, nIndex2, nIndex3, ...] = ind2sub(size(matrix), nIndex);