gpt4 book ai didi

matlab - Octave/MATLAB 中的 deal() 函数有什么意义?

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:18 24 4
gpt4 key购买 nike

一些引用代码简单地使用函数deal(),比如

[a, b, c] = deal (1,2,3)

如文档(for Octavefor MATLAB)中所述,该函数只是将输入复制到输出。 为什么在这种情况下甚至一般情况下使用 deal()我正在尝试学习“更正确”的 MATLAB/Octave 用法,想知道我是否遗漏了重要的事情。或许,这是用法……

  • 传统风格或惯用语,代替像 a=1, b=2, c=3 这样的简单赋值或像 [a, b,c] = {1,2,3}{:},但比 Python argument unpacking 更受限制,如 this question
  • 对于一些更优雅的特性有用——例如,“深”与“浅”复制,如果这里甚至存在这样的概念,如果 deal() 用于复杂/可变参数?

我也理解单参数 [a,b,c]=deal(42) 但这本质上是 a=b=c=42 [a,b,c]=deal(x)x 分配给所有元素,而不是将 x 元素分配给每个元素。

或者也许只是我过度考虑了函数的这种微不足道的使用。

最佳答案

我偶尔使用 deal 的一个非常有用的方法是创建返回多个输出参数的匿名函数。例如,

>> f = @(x) deal(x^2,x^3);
>> [a,b] = f(3)
a =
9
b =
27

编辑 由于人们似乎发现此模式可能有用,请注意一个怪癖,因为您必须返回完整的输出数量。特别是不能使用a = f(3),否则会出错。要仅检索单个输出,请使用 [a,~] = f(3)[~,b] = f(3)。用于抑制输出参数的 ~ 语法从 R2007a 左右开始就存在了(恐怕我不记得确切的时间了)——在旧版本中,您将需要始终返回两个输出。希望对您有用。

关于matlab - Octave/MATLAB 中的 deal() 函数有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com