如何在MATLAB中使逻辑矩阵的XOR工作?

时间:2010-04-18 11:09:41

标签: matlab xor

>> XOR(X,X)
??? Undefined function or method 'XOR' for input arguments of type 'logical'.

为什么XOR不能用于逻辑矩阵?

我尝试了一个更简单的例子:

>> A=[1 0;1 0];
>> B=[1 1;0 0];

>> XOR(A,B)
??? Undefined function or method 'XOR' for input arguments of type 'double'.

如何正确使用XOR

3 个答案:

答案 0 :(得分:8)

它对我有用。

A=[1 0;1 0];
B=[1 1;0 0];

xor(A,B)
ans =
     0     1
     1     0

然而,当我尝试这个......

XOR(A,B)
??? Undefined function or method 'XOR' for input arguments of type 'double'.

看到差异。保留上限以解决问题。

我认为由于其文档中使用的MathWorks约定而产生歧义。当他们在帮助中显示函数的名称时,他们会使用全部大写。例如,这是xor的帮助。

>> help xor
XOR Logical EXCLUSIVE OR.
  XOR(S,T) is the logical symmetric difference of elements S and T.
  The result is logical 1 (TRUE) where either S or T, but not both, is 
  nonzero.  The result is logical 0 (FALSE) where S and T are both zero 
  or nonzero.  S and T must have the same dimensions (or one can be a 
  scalar).

即便如此,当您使用该功能时,也会在功能名称中使用小写字母。

答案 1 :(得分:1)

以下内容如何:

C = abs(A-B);

上面的陈述使C成为A和B的异或,因为xor是真的,其中条目彼此不同,1-0或0-1将给出1或-1(并且其中的abs将给出1 ),而0-0和1-1都是1。

如果您真的想要,可以使用以下定义创建“XOR.m”文件:

function C=XOR(A,B)
% function C=XOR(A,B)
%   INPUTS:
%      A - m x n matrix, consisting only of 1s or 0s.
%      B - m x n matrix, consisting only of 1s or 0s.
%   OUTPUT:
%      C - m x n matrix, containing the logical XOR of the elements of A and B
C=abs(A-B)

但是,你应该记住,Matlab中的函数调用非常慢,所以你可能只想写出我给你的定义,无论你什么时候需要它。

修改
我最初并不理解您的问题....您需要使用xor而不是XOR,如果它抱怨您的矩阵是双精度而不是逻辑,那么请使用A==1B==1代替ABMatlab is case sensitive when it comes to variable names and built-in functions such as the xor function

答案 2 :(得分:0)

this postC = A~=B