【问题标题】:How can I find the maximum value and its index in array in MATLAB?如何在 MATLAB 中找到数组中的最大值及其索引?
【发布时间】:2017-09-23 00:44:03
【问题描述】:

假设我有一个数组a = [2 5 4 7]。返回最大值及其索引的函数是什么?

例如,在我的例子中,该函数应该返回 7 作为最大值和 4 作为索引。

【问题讨论】:

  • 在命令行写max并按F1寻求帮助(如果在Windows系统上,其他系统将使用另一个键)并阅读文档。
  • 有很多教程可以让你熟悉基本的 Matlab 函数 :) Mathworks
  • Matlab's documentation(也可以在命令窗口中启动 doc)包含您需要了解的有关 matlab 函数、示例和教程的几乎所有内容。

标签: matlab max matrix-indexing


【解决方案1】:

例如:

max_a = max(a)
a.index(max_a)

【讨论】:

    【解决方案2】:

    这将返回矩阵中的最大值

    max(M1(:))
    

    这将返回该值的行和列

    [x,y]=ind2sub(size(M1),max(M1(:)))
    

    对于最小值,只需将单词 max 与 min 交换即可。

    【讨论】:

      【解决方案3】:

      3D案例

      修改 Mohsen 对 3D 数组的回答:

      [M,I] = max (A(:));
      [ind1, ind2, ind3] = ind2sub(size(A),I)
      

      【讨论】:

      • 这很有帮助!
      【解决方案4】:

      您可以使用 max() 来获取最大值。 max 函数还可以返回向量中最大值的索引。为此,请将调用 max 的结果分配给一个二元素向量,而不仅仅是一个变量。

      例如 z 是你的数组,

      >> [x, y] = max(z)
      
      x =
      
      7
      
      y =
      
      4
      

      这里,7 是第 4 位(索引)的最大数字。

      【讨论】:

        【解决方案5】:

        如果是二维数组(矩阵),您可以使用:

        [val, idx] = max(A, [], 2);
        

        idx 部分将包含包含每行最大元素的列号。

        【讨论】:

          【解决方案6】:

          函数是max。要获得第一个最大值,您应该这样做

          [val, idx] = max(a);
          

          val 是最大值,idx 是它的索引。

          【讨论】:

          • 分号是怎么回事?
          • @technazi MATLAB 通常会出于某种不可理解的原因在标准输出中宣布每个变量赋值。分号抑制了这一点。
          【解决方案7】:

          对于矩阵,您可以使用:

          [M,I] = max(A(:))
          

          I 是包含最大元素的 A(:) 的索引。

          现在,使用 ind2sub 函数提取 A 对应最大元素的行和列索引。

          [I_row, I_col] = ind2sub(size(A),I)
          

          来源:https://www.mathworks.com/help/matlab/ref/max.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-22
            • 2019-08-21
            • 2018-04-25
            • 2016-08-21
            相关资源
            最近更新 更多