Julia:使用布尔代数计算内积

Julia: calculate an inner product using boolean algebra

我有两个布尔向量 a = [1,1,1]b = [0,1,1],其中显然 1 代表 true0 代表 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]

然后我可以将 reducexor 函数一起使用。

reduce(xor, a .& b)

请注意,我尝试使用在 in the documentation 中找到的按位异或运算符 $(在匿名函数内),但此运算符已被弃用,Julia 0.6.2 建议使用 xor代替功能。我确实认为有函数名称使它非常整洁。