【问题标题】:ILNumerics: compund test for ILLogical: AND two logical conditionsILNumerics:ILLogical 的复合测试:AND 两个逻辑条件
【发布时间】:2017-04-18 16:54:52
【问题描述】:

我正在尝试创建一个 ILLogical 数组,该数组在上下限之间选择数据,如下所示:

ILLogical ix = a > limit[0] & a

其中 a 和 limit 是 ILArray。我收到有关“非标量逻辑到布尔转换”的 ILArgumentException,要求我查看 ILSettings.LogicalArrayToBoolConversion。将 '&' 更改为 '&&' 没有帮助。有没有办法建立一个导致 ILLogical 的复合测试?我的替代方案是什么?

【问题讨论】:

  • 我想一种方法是将测试组合成一个测试:ix = (a - limit[0]) * (limit[1] - a) > 0

标签: ilnumerics


【解决方案1】:

没有(方便的)方法可以按照此处所需的方式在 C# 中将二元逻辑运算符重载为 &。此外,如果存在这种方式,它将严重违背普遍的直觉,并可能导致更多的混乱而不是方便。

改为使用ILMath.and() & Co 的功能接口:

 ILLogical ix = ILMath.and(a > limit[0], a < limit[1]); 

见:API class documentation on and

【讨论】:

  • 我实际上已经尝试过并且得到了同样的错误。这就是我在第一篇文章中作为评论添加的解决方案的原因。
  • 我认为“和”对我来说失败的原因是我在github.com/arrayfire/arrayfire-dotnet 使用了 C# 绑定,它没有绑定它。一旦我添加了绑定“并且”确实有效。
  • 来自online docuC# 运算符 | (按位或)和 &(按位与)不适用于 ILArray。覆盖它们会与 || 冲突。用于组合 ILLogical 数组并被认为更重要的运算符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 2010-12-15
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
相关资源
最近更新 更多