2017-04-18 115 views
2

我試圖創建一個不合邏輯的陣列上限和下限這樣之間進行選擇數據:ILNumerics:複方試驗不合邏輯:和兩個邏輯條件

不合邏輯IX = A>極限[0] &一個<限制[1]

其中a和limit是ILArray < double>。我得到一個ILArgumentException關於「Nonscalar logical to bool conversion」,要求我查看ILSettings.LogicalArrayToBoolConversion。將'&'更改爲'& &'無濟於事。是否沒有辦法設置導致ILLogical的複合測試?我有什麼選擇?

+1

我想的一種方法是測試組合成單個測試:IX =(A - 極限[0] )*(限制[1] - a)> 0 – RxJx

回答

1

沒有(方便)的方式來將C#中的二進制邏輯運算符重載爲&,方法如此。而且,如果存在這樣的方式,它將嚴重違背普通直覺,並可能比方便造成更多混亂。

而是使用功能接口與ILMath.and() &鈷:

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

參見:API class documentation on and

+0

我實際上已經嘗試過並得到相同的錯誤。這就是我把這個解決方案引入我的第一篇文章的評論。 – RxJx

+0

我認爲'和'對我來說失敗的原因是我使用的是https://github.com/arrayfire/arrayfire-dotnet中的C#綁定,它沒有綁定它。一旦我添加了綁定'和'確實有效。 – RxJx

+0

來自[在線文件](http://ilnumerics.net/Opoverload.html):_The C#運營商| (按位或)和&(按位和)不適用於ILArray 。重寫它們會與||發生衝突運算符,用於組合ILLogical數組並被認爲更重要。 –