我需要找到整个矩阵的最小值,它是'坐标'。 在像
这样的矩阵中matrix = 8 7 6 5
4 3 2 1
最小值为(2,4)时的1。
答案 0 :(得分:3)
这可以通过使用find
来完成,您可以使用它的两个输出版本。因此,您要做的是在矩阵中搜索与矩阵中的最小值匹配的行和列位置。
因此:
[row, col] = find(matrix == min(matrix(:)));
row
和col
将包含matrix
的行和列位置,它们等于此最小值。请注意,我必须通过matrix(:)
将矩阵展开为向量。原因是因为如果你在矩阵上使用min
,它默认会给你每列的最小值。因为你想在整个矩阵中找到最小值,你可以将它转换为单个向量,然后在整个向量中找到最小值。
请注意,这会返回所有与最小值匹配的行和列位置,因此实际上会将row
和col
作为N x 1
列向量,N
是matrix
中等于最小值的元素总数。
如果您只想要一个匹配,只需将1作为第二个参数附加到find
:
[row, col] = find(matrix == min(matrix(:)), 1);
答案 1 :(得分:0)
另一个适用于任意数量维度的张量的选项是使用带有线性索引的min
,然后使用ind2sub
来恢复精确的索引(如果需要)。
[~, nIndex] = min(matrix(:));
[nIndex1, nIndex2, nIndex3, ...] = ind2sub(size(matrix), nIndex);