このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
2 つの配列の積集合
ページ内をすべて折りたたむ
構文
C = intersect(A,B)
C = intersect(A,B,setOrder)
C = intersect(A,B,___,'rows')
C = intersect(A,B,'rows',___)
[C,ia,ib] = intersect(___)
[C,ia,ib] = intersect(A,B,'legacy')
[C,ia,ib] = intersect(A,B,'rows','legacy')
説明
例
C = intersect(A,B)
は、A
と B
の両方に共通しているデータを繰り返しを除いて返します。C
は並べ替え順序となります。
A
とB
が table または timetable の場合、intersect
は、両方のテーブルに共通する行のセットを返します。timetable の場合、intersect
は行時間を考慮して等価性を判別し、出力 timetableC
を行時間で並べ替えます。
例
C = intersect(A,B,setOrder)
は、特定の順序で C
を返します。setOrder
には 'sorted'
または 'stable'
を指定できます。
C = intersect(A,B,___,'rows')
および
は、C
= intersect(A,B
,'rows',___)A
と B
の各行を 1 つのエンティティとして扱い、A
と B
の両方に共通の行を繰り返しを除いて返します。A
と B
は必ず指定しなければなりません。setOrder
はオプションで指定できます。
入力がいずれも categorical 配列または datetime 配列でない場合、'rows'
オプションは cell 配列をサポートしません。
例
[C,ia,ib] = intersect(___)
はまた、前述の任意の構文を使用してインデックス ベクトル ia
および ib
も返します。
一般的には、
C = A(ia)
およびC = B(ib)
です。'rows'
オプションが指定されている場合、C = A(ia,:)
およびC = B(ib,:)
です。A
およびB
が table または timetable の場合は、C = A(ia,:)
およびC = B(ib,:)
です。
例
[C,ia,ib] = intersect(A,B,'legacy')
と [
は、R2012b およびそれ以前のリリースの関数 C
,ia
,ib
] = intersect(A,B
,'rows','legacy')intersect
の動作を保持します。
'legacy'
オプションは categorical 配列、datetime 配列、duration 配列、table または timetable をサポートしません。
例
すべて折りたたむ
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
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
入力引数
すべて折りたたむ
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'
型の入力はサポートされません。
詳細については、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 より前に導入
参考
unique | union | ismember | issorted | setdiff | setxor | sort
トピック
- categorical 配列の結合
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:
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
- Deutsch
- English
- Français
- United Kingdom (English)
Contact your local office