1
>> 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

4

3 回答 3

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).

尽管如此,当您使用该函数时,您还是在函数名中使用小写字母。

于 2010-04-18T17:00:30.390 回答
1

以下情况如何:

C = 绝对值(AB);

上面的语句使 C 成为 A 和 B 的 XOR,因为 xor 在条目彼此不同的情况下为真,并且 1-0 或 0-1 将给出 1 或 -1(其中的 abs 将给出 1),而0-0 和 1-1 都是 1。

如果你真的想要,你可以创建一个具有以下定义的“XOR.m”文件:

函数 C=XOR(A,B)
% 函数 C=XOR(A,B)
% 输入:
% A - mxn 矩阵,仅由 1 或 0 组成。
% B - mxn 矩阵,仅由 1 或 0 组成。
% 输出:
% C - mxn 矩阵,包含 A 和 B 的元素的逻辑异或
C=abs(AB)

但是,您应该记住,Matlab 中的函数调用非常慢,因此您可能只想写出我给您的定义,无论您碰巧需要它。

编辑
我最初不明白你的问题....你需要使用xorand not XOR,如果它抱怨你的矩阵是双精度而不是逻辑,那么使用A==1andB==1而不是Aand B当涉及到变量名称和内置函数(例如 xor 函数)时,Matlab 区分大小写

于 2010-04-18T11:25:16.180 回答
0

See this post. C = A~=B

于 2010-04-18T11:30:56.017 回答