Julia:使用布尔代数计算内积
Julia: calculate an inner product using boolean algebra
我有两个布尔向量 a = [1,1,1]
和 b = [0,1,1]
,其中显然 1
代表 true
,0
代表 false
。
我想用布尔代数计算它们的内积。因此我想要的结果是
1*0 + 1*1 + 1*1 = 0 + 1 + 1 = 0
因为加法起到了异或(XOR)的作用。
我知道产品部分可以这样做
a = [true, true, true] # could also use ones(Bool, 3)
b = [false, true, true]
bitwise_prod = a .& b
但我不知道如何求和。有什么想法吗?
我现在终于找到了一个好办法。首先我不需要使用布尔变量
a = [1, 1, 1] # or ones(Int, 3)
b = [0, 1, 1]
然后我可以将 reduce
与 xor
函数一起使用。
reduce(xor, a .& b)
请注意,我尝试使用在 in the documentation 中找到的按位异或运算符 $
(在匿名函数内),但此运算符已被弃用,Julia 0.6.2 建议使用 xor
代替功能。我确实认为有函数名称使它非常整洁。
我有两个布尔向量 a = [1,1,1]
和 b = [0,1,1]
,其中显然 1
代表 true
,0
代表 false
。
我想用布尔代数计算它们的内积。因此我想要的结果是
1*0 + 1*1 + 1*1 = 0 + 1 + 1 = 0
因为加法起到了异或(XOR)的作用。
我知道产品部分可以这样做
a = [true, true, true] # could also use ones(Bool, 3)
b = [false, true, true]
bitwise_prod = a .& b
但我不知道如何求和。有什么想法吗?
我现在终于找到了一个好办法。首先我不需要使用布尔变量
a = [1, 1, 1] # or ones(Int, 3)
b = [0, 1, 1]
然后我可以将 reduce
与 xor
函数一起使用。
reduce(xor, a .& b)
请注意,我尝试使用在 in the documentation 中找到的按位异或运算符 $
(在匿名函数内),但此运算符已被弃用,Julia 0.6.2 建议使用 xor
代替功能。我确实认为有函数名称使它非常整洁。