このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
intersect
2 つの配列の積集合
構文
説明
例
2 つのベクトルの共通集合
いくつかの共有の値をもつ 2 つのベクトルを作成します。
A = [7 1 7 7 4]; B = [7 0 4 4 0];
A
と B
の両方に共通する値を検出します。
C = intersect(A,B)
C = 1×2
4 7
2 つのテーブルの共通集合
共通の行をもつ 2 つのテーブルを作成します。
A = table([1:5]',categorical({'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]',categorical({'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 = intersect(A,B)
C=3×3 table
Var1 Var2 Var3
____ ____ _____
1 A false
3 C false
5 E false
2 つのベクトルの共通集合とインデックス
共通の値をもつ 2 つのベクトルを作成します。
A = [7 1 7 7 4]; B = [7 0 4 4 0];
A
と B
の両方で共通する値を、C = A(ia)
、C = B(ib)
となるようなインデックス ベクトル ia
および ib
と共に検出します。
[C,ia,ib] = intersect(A,B)
C = 1×2
4 7
ia = 2×1
5
1
ib = 2×1
3
1
2 つのテーブルの共通集合とそのインデックス
5 人の性別、年齢および身長の table A
を作成します。
A = table(categorical({'M';'M';'F';'M';'F'}),... [27;52;31;46;35],[74;68;64;61;64],... 'VariableNames',{'Gender' 'Age' 'Height'},... 'RowNames',{'Ted' 'Fred' 'Betty' 'Bob' 'Judy'})
A=5×3 table
Gender Age Height
______ ___ ______
Ted M 27 74
Fred M 52 68
Betty F 31 64
Bob M 46 61
Judy F 35 64
A
と共通する行をもつ table B
を作成します。
B = table(categorical({'F';'M';'F';'F'}),... [31;47;35;23],[64;68;62;58],... 'VariableNames',{'Gender' 'Age' 'Height'},... 'RowNames',{'Meg' 'Joe' 'Beth' 'Amy'})
B=4×3 table
Gender Age Height
______ ___ ______
Meg F 31 64
Joe M 47 68
Beth F 35 62
Amy F 23 58
A
と B
の両方で共通する行を、C = A(ia,:)
、C = B(ib,:)
となるようなインデックス ベクトル ia
および ib
と共に検出します。
[C,ia,ib] = intersect(A,B)
C=1×3 table
Gender Age Height
______ ___ ______
Betty F 31 64
ia = 3
ib = 1
値が同じで名前が異なる 2 つの行は、等しいと見なされます。したがって、Betty A(3,:)
と Meg B(1,:)
は、性別、年齢、身長が同じと検出されます。
2 つの行列の行の共通集合
共通の行をもつ 2 つの行列を作成します。
A = [2 2 2; 0 0 1; 1 2 3; 1 1 1]; B = [1 2 3; 2 2 2; 2 2 0];
A
と B
の両方に共通する行や、C = A(ia,:)
、C = B(ib,:)
となるようなインデックス ベクトル ia
および ib
を見つけます。
[C,ia,ib] = intersect(A,B,'rows')
C = 2×3
1 2 3
2 2 2
ia = 2×1
3
1
ib = 2×1
1
2
A
と B
を同じ行数にする必要はありませんが、同じ列数にしなければなりません。
指定した出力順序の共通集合
setOrder
引数を使って C
の値の順序を指定します。
C
の値を A
の値と同じ順序にする場合、'stable'
を指定します。
A = [7 1 7 7 4]; B = [7 0 4 4 0];
[C,ia,ib] = intersect(A,B,'stable')
C = 1×2
7 4
ia = 2×1
1
5
ib = 2×1
1
3
または、関数 'sorted'
を指定できます。
[C,ia,ib] = intersect(A,B,'sorted')
C = 1×2
4 7
ia = 2×1
5
1
ib = 2×1
3
1
NaN を含むベクトルの共通集合
NaN
を含む 2 つのベクトルを作成します。
A = [5 NaN NaN]; B = [5 NaN NaN];
A
と B
の両方に共通する値を検出します。
C = intersect(A,B)
C = 5
intersect
は NaN
値を個別のものとして処理します。
末尾が空白文字の文字ベクトルの cell 配列
文字ベクトルの cell 配列 A
を作成します。
A = {'dog','cat','fish','horse'};
文字ベクトルの cell 配列 B
を作成します。一部のベクトルは末尾に空白文字があります。
B = {'dog ','cat','fish ','horse'};
A
と B
の両方に共通する文字ベクトルを検出します。
[C,ia,ib] = intersect(A,B)
C = 1x2 cell
{'cat'} {'horse'}
ia = 2×1
2
4
ib = 2×1
2
4
intersect
は、文字ベクトルの cell 配列内の末尾の空白文字を別個の文字として処理します。
異なるクラスと形状の配列の共通集合
列ベクトル文字配列を作成します。
A = ['A';'B';'C'], class(A)
A = 3x1 char array
'A'
'B'
'C'
ans = 'char'
double
数値型の要素を含む 2 行 3 列の行列を作成します。
B = [65 66 67;68 69 70], class(B)
B = 2×3
65 66 67
68 69 70
ans = 'double'
A
と B
の両方に共通する値を検出します。
[C,ia,ib] = intersect(A,B)
C = 3x1 char array
'A'
'B'
'C'
ia = 3×1
1
2
3
ib = 3×1
1
3
5
intersect
は B
を文字配列として解釈し、文字配列 C
を返します。
class(C)
ans = 'char'
文字ベクトルと文字ベクトルの cell 配列の共通集合
3 文字の動物の名前を含む文字ベクトルを作成します。
A = ['dog';'cat';'fox';'pig']; class(A)
ans = 'char'
さまざまな長さの動物の名前を含む文字ベクトルの cell 配列を作成します。
B = {'cat','dog','fish','horse'}; class(B)
ans = 'cell'
A
と B
の両方に共通する文字ベクトルを検出します。
C = intersect(A,B)
C = 2x1 cell
{'cat'}
{'dog'}
結果の C
は、文字ベクトルの cell 配列になります。
class(C)
ans = 'cell'
intersect のレガシ動作の保持
'legacy'
フラグを使用して、コード内の R2012b およびそれ以前のリリースの intersect
の動作を保持します。
現在の動作における A
と B
の共通集合を検出します。
A = [7 1 7 7 4]; B = [7 0 4 4 0]; [C1,ia1,ib1] = intersect(A,B)
C1 = 1×2
4 7
ia1 = 2×1
5
1
ib1 = 2×1
3
1
A
の固有の要素を検出し、レガシ動作を保持します。
[C2,ia2,ib2] = intersect(A,B,'legacy')
C2 = 1×2
4 7
ia2 = 1×2
5 4
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
)ne
オブジェクト クラスのメソッドは、相互に一貫していなければなりません。これらのオブジェクトは、同じルート クラスから導出した異種混合配列を含みます。たとえば、A
および B
はグラフィックス オブジェクトのハンドルの配列にすることができます。
setOrder
— 順序フラグ
'sorted'
(既定値) | 'stable'
'sorted'
または 'stable'
として指定される順序フラグは、C
で値 (または行) の順序を示します。
フラグ | 説明 |
---|---|
'sorted' |
例 C = intersect([7 0 1 5],[0 2 7 5],'sorted') C = 0 5 7 |
'stable' |
例 C = intersect([7 0 1 5],[0 2 7 5],'stable') C = 7 0 5 |
データ型: char
| string
出力引数
C
— A
と B
で共通するデータ
ベクトル | 行列 | table | timetable
A
と B
で共通するデータ。ベクトル、行列またはテーブルとして返されます。入力 A
および B
が table または timetable の場合、C
の変数の順番は、A
の変数の順番と同じになります。
入力がベクトルまたは行列で、'legacy'
フラグを指定していないときの C
の形状を次に説明します。
'rows'
フラグを指定していない場合、C
は列ベクトルです。例外として、A
とB
の両方が行ベクトルの場合、C
は行ベクトルになります。'rows'
フラグを指定した場合、C
は、A
とB
に共通の行を含む行列です。
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
は、B
と共通する、A
内の値 (または行) を特定します。A
に繰り返しの値 (または行) がある場合、ia
は値 (または行) の最初の発生に対するインデックスを含みます。
ib
— B
のインデックス
列ベクトル
'legacy'
フラグを指定していないときに列ベクトルとして返される、B
のインデックス。ib
は、A
と共通する、B
内の値 (または行) を特定します。B
に繰り返しの値 (または行) がある場合、ib
は値 (または行) の最初の発生に対するインデックスを含みます。
ヒント
table または timetable の変数のサブセットに関する共通集合を検出するには、列の添字を使用できます。たとえば、
intersect(A(:,
を使用できます。ここで、vars
),B(:,vars
))vars
は、正の整数、正の整数のベクトル、変数名、変数名の cell 配列または logical ベクトルです。あるいはvartype
を使用して、指定したタイプの変数を選択する添字を作成することもできます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
'legacy'
フラグはサポートされていません。両方の入力が tall 配列である場合、
'stable'
フラグはサポートされません。両方の入力が tall 配列である場合、
'char'
型の入力はサポートされません。順序 categorical 配列はサポートされません。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
コード生成は最初および 2 番目の引数の cell 配列をサポートしません。
'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
が'sorted'
であるか、'legacy'
オプションを指定した場合、入力はあらかじめ昇順で並べ替えられていなければなりません。最初の出力C
は、昇順で並べ替えられています。複素数入力は、
single
またはdouble
でなければなりません。一方の入力が複素数でもう一方の入力が実数の場合は、以下のいずれかを実行します。
setOrder
を'stable'
に設定します。実数入力を複素数の昇順 (絶対値) で並べ替えます。実数入力が
x
と仮定します。sort(complex(x))
またはsortrows(complex(x))
を使用します。
ゼロ値の虚数部をもつ複素数データのコード生成 (MATLAB Coder)を参照してください。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
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)