朱莉娅:用布尔代数计算内积

时间:2018-05-18 09:32:42

标签: julia boolean-operations

我有两个布尔向量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

但我不知道怎么做。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

我现在真的找到了一个好方法。首先,我不需要使用布尔变量

a = [1, 1, 1]  # or ones(Int, 3)
b = [0, 1, 1]

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

reduce(xor, a & b)

请注意,我尝试使用找到in the documentation的bitwise xor运算符$(在匿名函数内),但不推荐使用此运算符,而Julia 0.6.2建议使用xor函数。我确实认为函数名称非常整洁。