【问题标题】:Find highest/lowest value in matrix在矩阵中查找最高/最低值
【发布时间】:2015-03-19 18:35:33
【问题描述】:

非常基本的问题:如何在随机矩阵中找到最高或最低值。 我知道有可能说:

a = find(A>0.5)

但我正在寻找的更像是这样的:

A = rand(5,5)
A = 
0.9388    0.9498    0.6059    0.7447    0.2835
0.6338    0.0104    0.5179    0.8738    0.0586
0.9297    0.1678    0.9429    0.9641    0.8210
0.0629    0.7553    0.7412    0.9819    0.1795
0.3069    0.8338    0.7011    0.9186    0.0349

% find highest (or lowest) value

ans = A(19)%for the highest or A(7) %for the lowest value in this case

【问题讨论】:

    标签: matlab


    【解决方案1】:

    查看min()max() 函数。它们可以返回最高/最低值及其索引:

    [B,I]=min(A(:)); %# note I fixed a bug on this line!
    

    返回I=7B=A(7)=A(2,2)。表达式 A(:) 告诉 MATLAB 现在将 A 视为一维数组,因此即使 A 是 5x5,它也会返回线性索引 7。

    如果您需要二维坐标,即B=A(7)=A(2,2) 中的“2,2”,您可以使用返回I=2,J=2[I,J] = ind2sub(size(A),I),参见here

    更新
    如果您需要所有条目的索引达到最小值,您可以使用find

    I = find(A==min(A(:));
    

    I 现在是所有这些的向量。

    【讨论】:

    • 它并不像我希望的那样精确!如果我写 [B,I]=min(min(A)),我会得到它的最小值为“B”及其行位置(“I”),但我不知道它属于哪一列. :(
    • @kojikurac:抱歉,我的代码有一个错误——我现在修复了它。不要使用 min(min(A)),而是使用 min(A(:))。
    • 好的,这样好多了,我还是只有一个问题。如果我有 2 个或更多相同的数字,它将始终只选择第一个。有没有办法让它呈现所有这些?
    • vielen lieben 潮湿!我不是数学家(这很明显,不是吗)。
    • @kojikurac 如果您想轻松找到最小值所在的列,请在之后使用ind2sub
    【解决方案2】:

    对于矩阵,您需要运行两次 MINMAX 函数,因为它们按列运行,即 max(A) 返回一个向量,其中每个元素都是 A 对应列中的最大元素。

    >> A = 兰德(4) 一个= 0.421761282626275 0.655740699156587 0.678735154857773 0.655477890177557 0.915735525189067 0.0357116785741896 0.757740130578333 0.171186687811562 0.792207329559554 0.849129305868777 0.743132468124916 0.706046088019609 0.959492426392903 0.933993247757551 0.392227019534168 0.0318328463774207 >> 最大值(最大值(A)) 答案= 0.959492426392903 >> 分钟(分钟(A)) 答案= 0.0318328463774207

    请注意,这只适用于矩阵。更高维度的数组需要运行 MIN 和 MAX 的次数与您可以使用 NDIMS 获得的维度一样多。

    【讨论】:

    • 您可以使用min(A(:)) 代替min(min(A)),无论A 有多少个维度,它都有效。
    • @JonasHeidelberg - 是的!很棒的提示!谢谢你...忘了 A(:) 序列化数组。
    【解决方案3】:

    试试这个

    A=magic(5)
    [x,y]=find(A==max(max(A))) %index maximum of the matrix A 
    A_max=A(x,y)
    [x1,y1]=find(A==min(max(A))) %index minimum of the matrix A 
    A_min=A(x1,y1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 2016-06-04
      相关资源
      最近更新 更多