このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
setxor
2 つの配列の排他的論理和のセット
構文
説明
例
2 つのベクトルの対称差
共通の値を 1 つもつ 2 つのベクトルを定義します。
A = [5 1 3 3 3]; B = [4 1 2];
交差部分にない A
と B
の値を検索します。
C = setxor(A,B)
C = 1×4
2 3 4 5
2 つのテーブルの対称差
共通の行をもつ 2 つのテーブルを定義します。
A = table([1:5]',['A';'B';'C';'D';'E'],logical([0;1;0;1;0]))
A=5×3 table
Var1 Var2 Var3
____ ____ _____
1 A false
2 B true
3 C false
4 D true
5 E false
B = table([1:2:10]',['A';'C';'E';'G';'I'],logical(zeros(5,1)))
B=5×3 table
Var1 Var2 Var3
____ ____ _____
1 A false
3 C false
5 E false
7 G false
9 I false
交差部分にない A
と B
の行を求めます。
C = setxor(A,B)
C=4×3 table
Var1 Var2 Var3
____ ____ _____
2 B true
4 D true
7 G false
9 I false
2 つのベクトルの対称差と異なる値へのインデックス
共通の値を 1 つもつ 2 つのベクトルを定義します。
A = [5 1 3 3 3]; B = [4 1 2];
交差部分にない A
と B
の値や、ia
、ib
などのインデックス ベクトルを検索します。
[C,ia,ib] = setxor(A,B)
C = 1×4
2 3 4 5
ia = 2×1
3
1
ib = 2×1
3
1
C
は、要素 A(ia)
と B(ib)
を並べ替えた組み合わせです。
2 つのテーブルの対称差と異なる行へのインデックス
5 人の性別、年齢および身長の table A
を定義します。
A = table(['M';'M';'F'],[27;52;31],[74;68;64],... 'VariableNames',{'Gender' 'Age' 'Height'},... 'RowNames',{'Ted' 'Fred' 'Betty'})
A=3×3 table
Gender Age Height
______ ___ ______
Ted M 27 74
Fred M 52 68
Betty F 31 64
A
と同じ変数をもつ table B
を定義します。
B = table(['F';'M'],[64;68],[31;47],... 'VariableNames',{'Gender' 'Height' 'Age'},... 'RowNames',{'Meg' 'Joe'})
B=2×3 table
Gender Height Age
______ ______ ___
Meg F 64 31
Joe M 68 47
交差部分にない A
と B
の行およびインデックス ベクトル ia
と ib
を求めます。
[C,ia,ib] = setxor(A,B)
C=3×3 table
Gender Age Height
______ ___ ______
Ted M 27 74
Joe M 47 68
Fred M 52 68
ia = 2×1
1
2
ib = 2
C
は、要素 A(ia,:)
と B(ib,:)
を並べ替えた組み合わせです。
2 つの行列の行の対称差
共通の行をもつ 2 つの行列を定義します。
A = [7 8 9; 7 7 1; 7 7 1; 1 2 3; 4 5 6]; B = [1 2 3; 4 5 6; 7 7 2];
交差部分にない A
と B
の行や、ia
、ib
などのインデックス ベクトルを検索します。
[C,ia,ib] = setxor(A,B,'rows')
C = 3×3
7 7 1
7 7 2
7 8 9
ia = 2×1
2
1
ib = 3
C
は、A(ia,:)
と B(ib,:)
の行を並べ替えた組み合わせです。
指定した順序の 2 つのベクトルの対称差
setOrder
引数を使って C
の値の順序を指定します。
C
の値を A
と B
と同じ順序にする場合、'stable'
を指定します。
A = [5 1 3 3 3]; B = [4 1 2];
[C,ia,ib] = setxor(A,B,'stable')
C = 1×4
5 3 4 2
ia = 2×1
1
3
ib = 2×1
1
3
または、関数 'sorted'
を指定できます。
[C,ia,ib] = setxor(A,B,'sorted')
C = 1×4
2 3 4 5
ia = 2×1
3
1
ib = 2×1
3
1
NaN を含むベクトルの対称差
NaN
を含む 2 つのベクトルを定義します。
A = [5 NaN NaN]; B = [5 NaN NaN];
A
と B
のベクトルの対称差を検索します。
C = setxor(A,B)
C = 1×4
NaN NaN NaN NaN
関数 setxor
は NaN
値を個別のものとして処理します。
末尾が空白文字の文字ベクトルの cell 配列
文字ベクトルの cell 配列 A
を作成します。
A = {'dog','cat','fish','horse'};
文字ベクトルの cell 配列 B
を作成します。一部のベクトルは末尾に空白文字があります。
B = {'dog ','cat','fish ','horse'};
A
と B
の交差部分にない文字ベクトルを検索します。
[C,ia,ib] = setxor(A,B)
C = 1x4 cell
{'dog'} {'dog '} {'fish'} {'fish '}
ia = 2×1
1
3
ib = 2×1
1
3
setxor
は、文字ベクトルの cell 配列内の末尾の空白文字を別個の文字として処理します。
異なるクラスと形状のベクトルの対称差
列ベクトル文字配列を作成します。
A = ['A';'B';'C'], class(A)
A = 3x1 char array
'A'
'B'
'C'
ans = 'char'
数値型 double
の要素を含む行ベクトルを作成します。
B = [66 67 68], class(B)
B = 1×3
66 67 68
ans = 'double'
A
と B
の対称差を検索します。
C = setxor(A,B)
C = 2x1 char array
'A'
'D'
結果は、列ベクトルの文字配列です。
class(C)
ans = 'char'
文字と文字ベクトルの cell 配列の対称差
文字ベクトル A
を作成します。
A = ['cat';'dog';'fox';'pig']; class(A)
ans = 'char'
文字ベクトルの cell 配列 B
を作成します。
B={'dog','cat','fish','horse'}; class(B)
ans = 'cell'
A
と B
の交差部分にない文字ベクトルを検索します。
C = setxor(A,B)
C = 4x1 cell
{'fish' }
{'fox' }
{'horse'}
{'pig' }
結果の C
は、文字ベクトルの cell 配列になります。
class(C)
ans = 'cell'
setxor のレガシ動作の保持
'legacy'
フラグを使用して、コード内の R2012b およびそれ以前のリリースの setxor
の動作を保持します。
現在の動作における A
と B
の対称差を検出します。
A = [5 1 3 3 3]; B = [4 1 2 2]; [C1,ia1,ib1] = setxor(A,B)
C1 = 1×4
2 3 4 5
ia1 = 2×1
3
1
ib1 = 2×1
3
1
対称差を検出し、レガシ動作を維持します。
[C2,ia2,ib2] = setxor(A,B,'legacy')
C2 = 1×4
2 3 4 5
ia2 = 1×2
5 1
ib2 = 1×2
4 1
入力引数
A,B
— 入力配列
配列
入力配列。'rows'
オプションを指定する場合、A
と B
の列数は同じでなければなりません。
A
および B
は次の例外を伴う同一クラスに属していなければなりません。
logical
、char
、およびすべての数値クラスはdouble
配列と組み合わせることができます。文字ベクトルの cell 配列は、文字配列または string 配列と組み合わせることができます。
categorical 配列は、文字配列、文字ベクトルの cell 配列または string 配列と組み合わせることができます。
datetime 配列は、日付文字ベクトルの cell 配列または単一の日付文字ベクトルと組み合わせることができます。
A
と B
には、データ型に基づく追加の要件があります。
A
とB
の両方が順序 categorical 配列である場合は、順序を含めて同じカテゴリ セットでなければなりません。A
とB
の両方が順序配列でない場合、同じカテゴリ セットをもつ必要はなく、カテゴリ名を使用して比較が実行されます。この場合、C
のカテゴリは、A
のカテゴリの後にA
にないB
のカテゴリを並べて構成されます。カテゴリの順序はA
およびB
と同じでなければならず、そのカテゴリの順序がC
の並べ替えに使用されます。A
とB
が table または timetable の場合、その変数名は同じでなければなりません (順序は除く)。table の場合、行名は無視されるため、値が同じで名前が異なる 2 つの行は等しいと見なされます。timetable の場合、行時間が考慮されるため、値が同じで時間が異なる 2 つの行は、等しくないと見なされます。A
とB
が datetime 配列の場合、タイム ゾーンの指定が互いに一貫していなければなりません。
また、A
および B
は次のクラス メソッドをもつオブジェクトにすることもできます。
sort
(または'rows'
オプションのsortrows
)eq
ne
オブジェクト クラスのメソッドは、相互に一貫していなければなりません。これらのオブジェクトは、同じルート クラスから導出した異種混合配列を含みます。たとえば、A
および B
はグラフィックス オブジェクトのハンドルの配列にすることができます。
setOrder
— 順序フラグ
'sorted'
(既定値) | 'stable'
'sorted'
または 'stable'
として指定される順序フラグは、C
で値 (または行) の順序を示します。
フラグ | 説明 |
---|---|
'sorted' |
例 C = setxor([5 1 3],[4 1 2],'sorted') C = 2 3 4 5 |
'stable' |
例 C = setxor([5 1 3],[4 1 2],'stable') C = 5 3 4 2 |
データ型: char
| string
出力引数
C
— 対称差配列
ベクトル | 行列 | table | timetable
対称差配列。ベクトル、行列または table または timetable として返されます。入力 A
および B
が table または timetable の場合、C
の変数の順番は、A
の変数の順番と同じになります。
入力がベクトルまたは行列で、'legacy'
フラグを指定していないときの C
の形状を次に説明します。
'rows'
フラグを指定していない場合、C
は列ベクトルです。例外として、A
とB
の両方が行ベクトルの場合、C
は行ベクトルになります。たとえば、setxor([],[1 2])
は列ベクトルを返します。'rows'
フラグを指定した場合、C
は、交差部分に含まれないA
とB
の行を含む行列です。A
のすべての値 (または行) がB
にも存在する場合、C
は空です。
A
と B
の入力のクラスによって、C
のクラスが決まります。
A
とB
のクラスが同じである場合、C
は同じクラスになります。char
または非倍精度数値クラスをdouble
と組み合わせる場合、C
は非倍精度入力と同じクラスになります。logical
クラスをdouble
と組み合わせる場合、C
はdouble
になります。文字ベクトルの cell 配列を
char
と組み合わせる場合、C
は文字ベクトルの cell 配列になります。categorical 配列を文字ベクトル、文字ベクトルの cell 配列または string と組み合わせる場合、
C
は categorical 配列になります。datetime 配列を日付文字ベクトルの cell 配列または単一の日付文字ベクトルと組み合わせる場合、
C
は datetime 配列になります。string 配列を文字ベクトルまたは文字ベクトルの cell 配列と組み合わせる場合、
C
は string 配列になります。
ia
— A
のインデックス
列ベクトル
'legacy'
フラグを指定していないときに列ベクトルとして返される、A
へのインデックス。ia
は、対称差に寄与する A
内の値 (または行) を特定します。A
内だけに出現する繰り返しの値 (または行) がある場合、ia
は値 (または行) の最初の出現位置に対するインデックスを含みます。
ib
— B
のインデックス
列ベクトル
'legacy'
フラグを指定していないときに列ベクトルとして返される、B
へのインデックス。ib
は、対称差に寄与する B
内の値 (または行) を特定します。B
内だけに出現する繰り返しの値 (または行) がある場合、ib
は値 (または行) の最初の出現位置に対するインデックスを含みます。
ヒント
table または timetable の変数のサブセットに関する対称差を求めるには、列の添字を使用できます。たとえば、
setxor(A(:,
を使用できます。ここで、vars
),B(:,vars
))vars
は、正の整数、正の整数のベクトル、変数名、変数名の cell 配列または logical ベクトルです。あるいはvartype
を使用して、指定したタイプの変数を選択する添字を作成することもできます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
'stable'
オプションおよび'legacy'
オプションはサポートされません。'char'
型の入力はサポートされていません。順序 categorical 配列はサポートされません。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
コード生成は最初および 2 番目の引数の cell 配列をサポートしません。
コード生成は可変サイズの行と列の間の
setxor
をサポートしません。A
およびB
は同じ方向の可変サイズベクトル入力でなければなりません。'rows'
オプションを指定しない場合、以下の点に注意してください。入力
A
およびB
は同じ方向のベクトルでなければなりません。'legacy'
オプションを指定した場合、入力A
およびB
は行ベクトルでなければなりません。可変サイズの行ベクトルで最初の次元は固定長 1 でなければなりません。可変サイズの列ベクトルで 2 番目の次元は固定長 1 でなければなりません。
[]
の入力はサポートされていません。1 行 0 列または 0 行 1 列の入力 (zeros(1,0)
など) を使用して、空集合を表します。'legacy'
オプションを指定した場合、空の出力は 1 行 0 列の行ベクトルになり、0 行 0 列にはなりません。
'legacy'
オプションと'rows'
オプションの両方を指定した場合、出力ia
およびib
は列ベクトルになります。これらの出力が空の場合、0 行 1 列となります。出力C
が 0 行 0 列の場合でも、これらの出力は 0 行 0 列にはなりません。setOrder
が'stable'
ではないか、'legacy'
フラグを指定した場合、入力はあらかじめ昇順で並べ替えられていなければなりません。最初の出力C
は、昇順で並べ替えられています。複素数入力は、
single
またはdouble
でなければなりません。一方の入力が複素数でもう一方の入力が実数の場合は、以下のいずれかを実行します。
setOrder
を'stable'
に設定します。実数入力を複素数の昇順 (絶対値) で並べ替えます。実数入力が
x
と仮定します。sort(complex(x))
またはsortrows(complex(x))
を使用します。
ゼロ値の虚数部をもつ複素数データのコード生成 (MATLAB Coder)を参照してください。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
'legacy'
フラグはサポートされていません。64 ビット整数はサポートされません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
'legacy'
フラグはサポートされていません。table 入力、timetable 入力、categorical 入力、datetime 入力、duration 入力はサポートされていません。
A
またはB
が文字ベクトルの cell 配列の場合、char
型とstring
型の入力はサポートされていません。代わりに、文字ベクトル入力引数の cell 配列を string 配列に変換します。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)