2 つの配列の積集合 - MATLAB intersect - MathWorks 日本 (2024)

Table of Contents
構文 説明 2 つのベクトルの共通集合 2 つのテーブルの共通集合 2 つのベクトルの共通集合とインデックス 2 つのテーブルの共通集合とそのインデックス 2 つの行列の行の共通集合 指定した出力順序の共通集合 NaN を含むベクトルの共通集合 末尾が空白文字の文字ベクトルの cell 配列 異なるクラスと形状の配列の共通集合 文字ベクトルと文字ベクトルの cell 配列の共通集合 intersect のレガシ動作の保持 入力引数 setOrder — 順序フラグ 'sorted' (既定値) | 'stable' 出力引数 C — A と B で共通するデータ ベクトル | 行列 | table | timetable ia — A のインデックス 列ベクトル ib — B のインデックス 列ベクトル ヒント 拡張機能 tall 配列 メモリの許容量を超えるような多数の行を含む配列を計算します。 C/C++ コード生成MATLAB® Coder™ を使用して C および C++ コードを生成します。 スレッドベースの環境 MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。 GPU 配列Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。 分散配列Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。 バージョン履歴 参考 トピック MATLAB コマンド Americas Europe Asia Pacific References

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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) は、AB の両方に共通しているデータを繰り返しを除いて返します。C は並べ替え順序となります。

  • AB が table または timetable の場合、intersect は、両方のテーブルに共通する行のセットを返します。timetable の場合、intersect は行時間を考慮して等価性を判別し、出力 timetable C を行時間で並べ替えます。

C = intersect(A,B,setOrder) は、特定の順序で C を返します。setOrder には 'sorted' または 'stable' を指定できます。

C = intersect(A,B,___,'rows') および C = intersect(A,B,'rows',___) は、AB の各行を 1 つのエンティティとして扱い、AB の両方に共通の行を繰り返しを除いて返します。AB は必ず指定しなければなりません。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')[C,ia,ib] = intersect(A,B,'rows','legacy') は、R2012b およびそれ以前のリリースの関数 intersect の動作を保持します。

'legacy' オプションは categorical 配列、datetime 配列、duration 配列、table または timetable をサポートしません。

すべて折りたたむ

2 つのベクトルの共通集合

ライブ スクリプトを開く

いくつかの共有の値をもつ 2 つのベクトルを作成します。

A = [7 1 7 7 4]; B = [7 0 4 4 0];

AB の両方に共通する値を検出します。

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

AB の両方に共通する行を検出します。

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];

AB の両方で共通する値を、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 

AB の両方で共通する行を、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];

AB の両方に共通する行や、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

AB を同じ行数にする必要はありませんが、同じ列数にしなければなりません。

指定した出力順序の共通集合

ライブ スクリプトを開く

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];

AB の両方に共通する値を検出します。

C = intersect(A,B)
C = 5

intersectNaN 値を個別のものとして処理します。

末尾が空白文字の文字ベクトルの cell 配列

ライブ スクリプトを開く

文字ベクトルの cell 配列 A を作成します。

文字ベクトルの cell 配列 B を作成します。一部のベクトルは末尾に空白文字があります。

B = {'dog ','cat','fish ','horse'};

AB の両方に共通する文字ベクトルを検出します。

[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'

AB の両方に共通する値を検出します。

[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

intersectB を文字配列として解釈し、文字配列 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'

AB の両方に共通する文字ベクトルを検出します。

C = intersect(A,B)
C = 2x1 cell {'cat'} {'dog'}

結果の C は、文字ベクトルの cell 配列になります。

class(C)
ans = 'cell'

intersect のレガシ動作の保持

ライブ スクリプトを開く

'legacy' フラグを使用して、コード内の R2012b およびそれ以前のリリースの intersect の動作を保持します。

現在の動作における AB の共通集合を検出します。

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 の値 (または行) は、sort により返されるような並べ替えられた順序で返されます。

C = intersect([7 0 1 5],[0 2 7 5],'sorted')
C = 0 5 7
'stable'

C の値 (または行) が A に現れる同じ順序で返されます。

C = intersect([7 0 1 5],[0 2 7 5],'stable')
C = 7 0 5

データ型: char | string

出力引数

すべて折りたたむ

CAB で共通するデータ
ベクトル | 行列 | table | timetable

AB で共通するデータ。ベクトル、行列またはテーブルとして返されます。入力 A および B が table または timetable の場合、C の変数の順番は、A の変数の順番と同じになります。

入力がベクトルまたは行列で、'legacy' フラグを指定していないときの C の形状を次に説明します。

  • 'rows' フラグを指定していない場合、C は列ベクトルです。例外として、AB の両方が行ベクトルの場合、C は行ベクトルになります。

  • 'rows' フラグを指定した場合、C は、AB に共通の行を含む行列です。

AB の入力のクラスによって、C のクラスが決まります。

  • AB のクラスが同じである場合、C は同じクラスになります。

  • char または非倍精度数値クラスを double と組み合わせる場合、C は非倍精度入力と同じクラスになります。

  • logical クラスを double と組み合わせる場合、Cdouble になります。

  • 文字ベクトルの cell 配列を char と組み合わせる場合、C は文字ベクトルの cell 配列になります。

  • categorical 配列を文字ベクトル、文字ベクトルの cell 配列または string と組み合わせる場合、C は categorical 配列になります。

  • datetime 配列を日付文字ベクトルの cell 配列または単一の日付文字ベクトルと組み合わせる場合、C は datetime 配列になります。

  • string 配列を文字ベクトルまたは文字ベクトルの cell 配列と組み合わせる場合、C は string 配列になります。

iaA のインデックス
列ベクトル

'legacy' フラグを指定していないときに列ベクトルとして返される、A のインデックス。iaは、B と共通する、A 内の値 (または行) を特定します。A に繰り返しの値 (または行) がある場合、ia は値 (または行) の最初の発生に対するインデックスを含みます。

ibB のインデックス
列ベクトル

'legacy' フラグを指定していないときに列ベクトルとして返される、B のインデックス。ibは、A と共通する、B 内の値 (または行) を特定します。B に繰り返しの値 (または行) がある場合、ib は値 (または行) の最初の発生に対するインデックスを含みます。

ヒント

  • table または timetable の変数のサブセットに関する共通集合を検出するには、列の添字を使用できます。たとえば、intersect(A(:,vars),B(:,vars)) を使用できます。ここで、vars は、正の整数、正の整数のベクトル、変数名、変数名の cell 配列または logical ベクトルです。あるいは vartype を使用して、指定したタイプの変数を選択する添字を作成することもできます。

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2006a より前に導入

参考

unique | union | ismember | issorted | setdiff | setxor | sort

トピック

  • categorical 配列の結合

MATLAB コマンド

次の MATLAB コマンドに対応するリンクがクリックされました。

 

コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。

2 つの配列の積集合 - MATLAB intersect- MathWorks 日本 (1)

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)

Asia Pacific

Contact your local office

2 つの配列の積集合 - MATLAB intersect
- MathWorks 日本 (2024)

References

Top Articles
Latest Posts
Article information

Author: Merrill Bechtelar CPA

Last Updated:

Views: 5573

Rating: 5 / 5 (70 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Merrill Bechtelar CPA

Birthday: 1996-05-19

Address: Apt. 114 873 White Lodge, Libbyfurt, CA 93006

Phone: +5983010455207

Job: Legacy Representative

Hobby: Blacksmithing, Urban exploration, Sudoku, Slacklining, Creative writing, Community, Letterboxing

Introduction: My name is Merrill Bechtelar CPA, I am a clean, agreeable, glorious, magnificent, witty, enchanting, comfortable person who loves writing and wants to share my knowledge and understanding with you.