【问题标题】:Matlab: What does the second argument in max(A,[],dim) mean?Matlab: max(A,[],dim) 中的第二个参数是什么意思?
【发布时间】:2013-06-06 06:52:34
【问题描述】:

我只是在矩阵的特定列上使用max 函数,语法让我想知道:

作为第二个参数传递的这个空矩阵是什么意思?

max(A,[],dim)

我知道这可能是为了将其与进行比较的max(A,i) 分开。但是,为什么是一个空矩阵?

它有一定的意义吗?这种参数在其他类似的函数中使用吗?

【问题讨论】:

  • 尚未对此进行测试,但随着 ~ 的引入,您现在可以跳过最新 Matlab 版本中的输入和输出参数。我想通常的解决方案最终会变成:max(A,~,dim)
  • @DennisJaheruddin,我不知道~。谢谢(你的)信息。但目前,我对其进行了测试,[] 不能替换为~(至少在这种情况下不是)。
  • 我不相信 ~ 在您调用函数时可以用作输入参数的占位符。仅在 argouts 列表中。作为输入 arg,它仅在函数定义的参数列表(即foo.m 的第 1 行)中起作用,以表示“无论调用者传入什么,此函数实现都会忽略此参数”。
  • @AndrewJanke,你是对的。我检查了文档,正如你所说,它可以调用一个函数来忽略输出值,或者在函数定义中忽略传递的值作为输入。

标签: matlab


【解决方案1】:

其实你的猜测是对的。由于 Matlab 不是强类型语言,也没有经典的函数重载技术,因此函数必须通过上下文猜测参数的含义。 Mathworks 想要将单个矩阵中的最大值和单个函数中的两个数组的最大值合并。

因此,他们需要以某种方式将这些案例分开。他们使用空矩阵[] 作为占位符。否则,他们将无法区分 max(A, dim)max(A, B) 的案例。他们可以为此使用任何特殊变量,但[] 是基本构造。

【讨论】:

  • +1 很好的解释。附带说明:您是否想到了与[] 相同用法的任何其他功能(除了最小/最大)?我很想知道这是 Matlab 中的一般情况还是仅在这种情况下。
  • @Mahm00d 它经常用于优化函数中,例如fmincon 以获取最终的options 参数而不指定所有可能不相关的不等式。它非常普遍,具有更复杂的功能,需要大量参数。
  • @Dan,所以基本上它是用来跳过一些参数的,对吧?和默认参数一样?
【解决方案2】:

它允许您比较两个大小相等的矩阵以找到元素最大值。请参阅docs。使用[] 作为输入只是一种跳到后面输入的方法。

【讨论】:

  • 据我在文档中看到的,这是 dim 参数,而不是空矩阵之一。
  • @Mahm00d 对不起,你是对的,我想的是第二个输出而不是第二个输入。我现在就更正一下。
【解决方案3】:

max 函数默认执行值对的比较。输入max(1,2)显然会输出2。作为另一个例子,使用max(x,0) 是对x 执行半波整流的一种简洁方法,将x 的每个值与0 的单个值进行比较。要将单个矩阵的元素与该矩阵中包含的值进行比较,可以将第二个参数指定为空矩阵[]。这作为函数的标志来比较一个矩阵中的值。

您将看到一个空值[] 在整个文档中的许多 Matlab 函数中使用。这通常表示要使用默认值,或更改函数的操作模式。

【讨论】:

    猜你喜欢
    • 2017-02-23
    • 1970-01-01
    • 2011-10-22
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    相关资源
    最近更新 更多