沿行执行连续的 XOR

Perform a successive XOR along rows

我想弄清楚如何在 matlab 中对一行执行连续的 XOR,其中每个元素都是 XORing 本身和前一个元素的结果,例如:

如果该行是

x = [1 0 1 1]

我希望结果是:

x[0] = 1
x[1] = x[0]^x[1] = 1
x[2] = x[1]^x[2] = 0
x[3] = x[2]^x[3] = 1
x = [1 1 0 1]

我试过使用 xor(A,B) 但这似乎只能同时对多个数组起作用。我也试过这个循环:

for k = 10000:1
    for i = 1:64
        allchallenge_full(k,i+1) = xor(allchallenge_full(k,i).^allchallenge_full(k,i+1))
    end
end

但这只会导致全 1。

如有任何建议,我们将不胜感激!谢谢!

如果输入 x 只是零和一个:

result = mod(cumsum(x), 2);

将其应用于矩阵的每一行 x:

result = mod(cumsum(x,2), 2);

如果你想保持简单,一个 for 循环,连同 xor function^ 在 Matlab 中代表提升到一个幂)应该可以正常工作:

x = [1 0 1 1];

for i = 2:numel(x)
    x(i) = xor(x(i-1),x(i));
end

最终输出是预期的:

x =
     1     1     0     1

请记住,在 Matlab 中,索引是 one-based 而不是许多其他编程语言中的 zero-based。因此,x 的第一个元素是 x(1) 而不是 x(0).