gpt4 book ai didi

matlab - | 之间有什么区别?和||在 MATLAB 中?

转载 作者:太空宇宙 更新时间:2023-11-03 19:42:04 28 4
gpt4 key购买 nike

MATLAB 中的||| 逻辑运算符有什么区别?

最佳答案

我确定您已经阅读了 short-circuiting operators 的文档, 而对于 element-wise operators .

一个重要的区别是元素运算符可以对数组进行运算,而短路运算符仅适用于标量逻辑操作数。

但可能关键的区别在于短路问题。对于短路运算符,表达式从左到右计算,一旦最终结果确定,则不计算剩余项。

例如,考虑

x = a && b

如果 a 的计算结果为 false,那么我们知道 a && b 的计算结果为 false 而不管是什么b 的计算结果为。所以不需要计算b

现在考虑这个表达式:

NeedToMakeExpensiveFunctionCall && ExpensiveFunctionCall

我们想象 ExpensiveFunctionCall 需要很长时间来评估。如果我们可以执行其他一些廉价的测试,允许我们跳过对 ExpensiveFunctionCall 的调用,那么我们就可以避免调用 ExpensiveFunctionCall。

因此,假设 NeedToMakeExpensiveFunctionCall 的计算结果为 false。在那种情况下,因为我们使用了短路运算符,所以 ExpensiveFunctionCall 将不会被调用。

相反,如果我们使用逐元素运算符并编写如下函数:

NeedToMakeExpensiveFunctionCall & ExpensiveFunctionCall

那么永远不会跳过对 ExpensiveFunctionCall 的调用。

事实上MATLAB documentation ,我希望您已经阅读过,其中包含一个很好的例子,很好地说明了这一点:

x = (b ~= 0) && (a/b > 18.5)

在这种情况下,如果 b 为零,我们将无法执行 a/b。因此 b ~= 0 的测试。使用短路运算符意味着我们可以避免在 b 为零时计算 a/b,从而避免出现运行时错误。显然,逐元素逻辑运算符无法避免运行时错误。

有关短路评估的更详细讨论,请参阅 Wikipedia article关于这个问题。

关于matlab - | 之间有什么区别?和||在 MATLAB 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14183385/

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