沿行执行连续的 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)
.
我想弄清楚如何在 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)
.