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 = abs(AB);

上記のステートメントは、C を A と B の XOR にします。これは、エントリが互いに異なる場合に xor が真であり、1-0 または 0-1 が 1 または -1 (および abs of that が 1 を与える) を与えるためです。 0-0 と 1-1 はどちらも 1 です。

本当に必要な場合は、次の定義で「XOR.m」ファイルを作成できます。

関数 C=XOR(A,B)
% 関数 C=XOR(A,B)
% 入力:
% A - 1 または 0 のみで構成される mxn 行列。
% B - 1 または 0 のみで構成される mxn 行列。
% 出力:
% C - A と B の要素の論理 XOR を含む mxn 行列
C=abs(AB)

ただし、Matlab での関数呼び出しは恐ろしく遅いことに注意してください。そのため、私が提供した定義を必要に応じて書き出すことができます。

編集私は最初にあなたの質問を理解していませんでした.... and not
を使用する必要があり、行列が論理値ではなく double であると不平を言っている場合は、 and の代わりに and を使用してください。Matlab では、変数名や xor 関数などの組み込み関数に関して、大文字と小文字が区別されますxorXORA==1B==1AB

于 2010-04-18T11:25:16.180 に答える
0

この投稿を参照してください。C = A~=B

于 2010-04-18T11:30:56.017 に答える