matlab中的快速异或阵列
还有比这更有效的方法对矩阵的每一列进行异或运算吗matlab中的快速异或阵列,matlab,xor,Matlab,Xor,还有比这更有效的方法对矩阵的每一列进行异或运算吗 mod(sum(matrix),2) 它从逻辑转换为双精度,并使用昂贵的模 更新: 根据,求和uint比求和double慢,因为它涉及到最大剪辑和其他原因。 另外,请注意,求和逻辑(使用'native')在1处停止。我试图避免转换为双,但效果并不好(通常更糟) sum的native选项允许您在结果中保留参数的类型。除了@ClementJ所说的之外,我还尝试了 tic E = A(1) for i = 2:numel(A) E = xor
mod(sum(matrix),2)
它从逻辑转换为双精度,并使用昂贵的模
更新:
根据,求和uint比求和double慢,因为它涉及到最大剪辑和其他原因。
另外,请注意,求和逻辑(使用
'native'
)在1处停止。我试图避免转换为双
,但效果并不好(通常更糟)
sum的
native
选项允许您在结果中保留参数的类型。除了@ClementJ所说的之外,我还尝试了
tic
E = A(1)
for i = 2:numel(A)
E = xor(y, A(i));
end
E
toc
希望加速器能帮上忙,但没什么用,而且
这实际上不起作用,因为XOR只允许2个输入
MATLAB的双精度向量算法的速度几乎和它得到的一样快,所以你可能做得再好不过了。如果这真的提高了性能,那么我建议编写一个C-MEX函数:应该很容易。xor函数?你能详细说明一下吗?@reve_etrange,我要找的是对数组A的元素进行异或运算:A(1)xor A(2)xor。。。异或A(n)。Matlab的xor(A,B)不能做到这一点。如果你想快速实现,我会编写一个mex函数来实现。
tic
E = A(1)
for i = 2:numel(A)
E = xor(y, A(i));
end
E
toc
tic
F = num2cell(A);
F = xor(F{:})
toc