Shorthand 涉及矩阵的运算,使用 xor
Shorthand for an operation involving matrices, using xor
我有 2 个矩阵
A = [a b; c d];
B = [e f; g h];
其中 a,b,c,d,e,f,g,h
是 0
或 1
。
我想做
[(a*e) xor (b*g) (a*f) xor (b*h);
(c*e) xor (d*g) (c*f) xor (d*h)];
这个操作有MATLAB命令吗?
这是一个使用矩阵乘法的解决方案:
result = A*B ==1;
解释:
你的操作与矩阵乘法相同,只是在矩阵乘法中我们使用 sum
操作而不是 xor
。这是矩阵乘法:
[(a*e) + (b*g) (a*f) + (b*h);
(c*e) + (d*g) (c*f) + (d*h)];
使用 xor
我们想看看两个操作数是否不同,如果我们对两个二进制数求和,可能的输出是 [0 1 2]= [0+0 1+0 1+1]
所以我们可以看到只有两个操作数不同,如果它们的总和是1 所以我们计算矩阵乘法并检查它是否等于 1。
这是一个使用预先计算的线性索引的解决方案:
result = A([1 1;2 2]) & B([1 3;1 3]) ~= A([3 3;4 4]) & B([2 4;2 4]);
我有 2 个矩阵
A = [a b; c d];
B = [e f; g h];
其中 a,b,c,d,e,f,g,h
是 0
或 1
。
我想做
[(a*e) xor (b*g) (a*f) xor (b*h);
(c*e) xor (d*g) (c*f) xor (d*h)];
这个操作有MATLAB命令吗?
这是一个使用矩阵乘法的解决方案:
result = A*B ==1;
解释:
你的操作与矩阵乘法相同,只是在矩阵乘法中我们使用 sum
操作而不是 xor
。这是矩阵乘法:
[(a*e) + (b*g) (a*f) + (b*h);
(c*e) + (d*g) (c*f) + (d*h)];
使用 xor
我们想看看两个操作数是否不同,如果我们对两个二进制数求和,可能的输出是 [0 1 2]= [0+0 1+0 1+1]
所以我们可以看到只有两个操作数不同,如果它们的总和是1 所以我们计算矩阵乘法并检查它是否等于 1。
这是一个使用预先计算的线性索引的解决方案:
result = A([1 1;2 2]) & B([1 3;1 3]) ~= A([3 3;4 4]) & B([2 4;2 4]);