Programming and Data Types | ![]() ![]() |
論理演算子
この節では、MATLABの論理演算子について述べます。
MATLABは、つぎの論理演算子を用意しています。
演算子 |
詳細 |
& |
AND |
| |
OR |
~ |
NOT |
各論理演算子を使って、論理表現の結果を決める規則の設定集合を表します。
AND
演算子 &
を使った表現は、2つのオペランドが論理的に真ならば真を出力します。数値の場合、表現は、2つのオペランドが共にゼロでないならば真になります。つぎの例題は、ベクトルu
の中の要素とそれに対応するベクトル v
の中の要素の論理
AND
を示すものです。u = [1 0 2 3 0 5]; v = [5 6 1 0 0 7]; u & v ans = 1 0 1 0 0 1
OR
演算子 |
を使った表現は、1つのオペランドが論理的に真か、または、2つのオペランドが論理的に真の場合、真になります。OR
表現は2つのオペランドが共に偽のときのみ偽になります。数値の場合、表現式は2つのオペランドが共にゼロならば偽です。つぎの例題は、ベクトル
u
の中の要素と、それに対応するベクトル v
の要素の論理 OR
を示すものです。u | v ans = 1 1 1 1 0 1
NOT
演算子 ~
を使った表現は、オペランドを否定するものです。これは、オペランドが真ならば偽の結果を出力し、オペランドが偽ならば真を出力します。数値の場合、ある非ゼロのオペランドはゼロで、ゼロオペランドは1になります。つぎの例題は、ベクトルu
要素の否定を示すものです。~u ans = 0 1 0 0 1 0
論理演算子と配列
MATLAB
の論理演算子は、同じ大きさの配列の対応する要素を比較します。ベクトルや長方形配列に対して、2つのオペランドは、一方がスカラでない限り、同じ大きさでなければなりません。一つのオペランドがスカラで、他のオペランドがスカラでない場合、MATLAB
はスカラでないオペランドのすべての要素に対して、スカラと比較します。設定した関係が真の位置に1
、偽の位置に0
を出力します。
論理関数
論理演算子に加え、MATLABはいくつかの論理関数を提供します。
関数 |
詳細 |
例題 |
xor |
関数xor は、対象となるオペランドとの排他的OR を行ないます。排他的OR 表現は、一つのオペランドがTRUEならば
TRUEで、他の場合は、FALSEです。数値の場合、関数は一つのオペランドがゼロでなく、他のオペランドがゼロならば1 を出力します。 |
a = 1; b = 1; xor(a,b) ans = 0 |
all |
あるベクトルのすべての要素が真 であるか、またはすべてがゼロでない場合、関数all は1を出力します。all 関数は、行列に関しては列方向に機能します。 |
A = [0 1 2;3 5 0] A = 0 1 2 3 5 0 all(A) ans = 0 1 0 |
any |
引数の任意の要素が、真、または、ゼロでない場合、関数anyは1 を出力し、他の場合は0 を出力します。all と同じように、any 関数は、行列に関しては列方向に機能します。 |
v = [5 0 8]; any(v) ans = 1 |
.
いくつかの他の MATLAB
関数も、論理演算を行います。たとえば、関数isnan
は、NaN
s
に対して1
を、関数isinf
は、Inf
s
に対して1
を出力します。論理関数の一覧は、ops
デレクトリを参照してください。
関数findを使った論理表現とサブスクリプト機能
関数find
は、与えられた論理条件を満足する配列要素のインデックスを決定します。これは、行列をマスクしたり、行列にインデックスを作成するのに有効です。最も一般的な型では、find
はインデックスを表す単一の行ベクトルを返します。このベクトルは、任意のサイズ、または、型の配列の中のインデックスに対応しています。たとえば、
A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 i = find(A > 8); A(i) = 100 A = 100 2 3 100 5 100 100 8 100 7 6 100 4 100 100 1
配列の場合と同様に、長方形行列に対して、条件を満たす行と列両方向のインデックスを得るのにfind
を使います。より詳細な情報については、ヘルプ機能を使ってください。
![]() |
比較演算子 | 演算子の優先順位 | ![]() |