このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
union
2 つの配列の和集合
構文
説明
例
2 つのベクトルの和集合
共通の値を 1 つもつ 2 つのベクトルを定義します。
A = [5 7 1]; B = [3 1 1];
ベクトル A
と B
の和集合を求めます。
C = union(A,B)
C = 1×4
1 3 5 7
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 = union(A,B)
C=7×3 table
Var1 Var2 Var3
____ ____ _____
1 A false
2 B true
3 C false
4 D true
5 E false
7 G false
9 I false
2 つのベクトルの和集合とインデックス
共通の値を 1 つもつ 2 つのベクトルを定義します。
A = [5 7 1]; B = [3 1 1];
ベクトル A
と B
の和集合およびインデックス ベクトル ia
と ib
を求めます。
[C,ia,ib] = union(A,B)
C = 1×4
1 3 5 7
ia = 3×1
3
1
2
ib = 1
C
内の値は、A(ia)
と B(ib)
を組み合わせた値です。
2 つのテーブルの和集合とインデックス
3 人の性別、年齢および身長のテーブル 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
と同じ変数をもつテーブル 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] = union(A,B)
C=4×3 table
Gender Age Height
______ ___ ______
Betty F 31 64
Ted M 27 74
Joe M 47 68
Fred M 52 68
ia = 3×1
3
1
2
ib = 2
Meg
と Betty
のデータは同じです。union
は A
からのインデックスだけを返します。このインデックスは Betty
に対応しています。
2 つの行列の行の結合
共通の行をもつ 2 つの行列を定義します。
A = [2 2 2; 0 0 1]; B = [1 2 3; 2 2 2; 2 2 2];
A
と B
を組み合わせて繰り返しを除いた行およびインデックス ベクトル ia
、ib
を求めます。
[C,ia,ib] = union(A,B,'rows')
C = 3×3
0 0 1
1 2 3
2 2 2
ia = 2×1
2
1
ib = 1
C
の行は、A(ia,:)
と B(ib,:)
の行の組み合わせです。
指定した出力順序の 2 つのベクトルの和集合
setOrder
引数を使って C
の値の順序を指定します。
C
の値を A
および B
の値と同じ順序にする場合、'stable'
を指定します。
A = [5 7 1];
B = [3 1 1];
[C,ia,ib] = union(A,B,'stable')
C = 1×4
5 7 1 3
ia = 3×1
1
2
3
ib = 1
または、関数 'sorted'
を指定できます。
A = [5 7 1];
B = [3 1 1];
[C,ia,ib] = union(A,B,'sorted')
C = 1×4
1 3 5 7
ia = 3×1
3
1
2
ib = 1
NaN を含むベクトルの和集合
NaN
を含む 2 つのベクトルを定義します。
A = [5 NaN 1]; B = [4 NaN NaN];
ベクトル A
と B
の和集合を求めます。
C = union(A,B)
C = 1×6
1 4 5 NaN NaN NaN
union
は NaN
値を個別のものとして処理します。
末尾が空白文字の文字ベクトルの cell 配列
文字ベクトルの cell 配列 A
を作成します。
A = {'dog','cat','fish','horse'};
文字ベクトルの cell 配列 B
を作成します。一部のベクトルは末尾に空白文字があります。
B = {'dog ','cat','fish ','horse'};
A
と B
の要素を組み合わせます。
[C,ia,ib] = union(A,B)
C = 1x6 cell
{'cat'} {'dog'} {'dog '} {'fish'} {'fish '} {'horse'}
ia = 4×1
2
1
3
4
ib = 2×1
1
3
union
は、文字ベクトルの cell 配列内の末尾の空白文字を別個の文字として処理します。
異なるクラスと形状のベクトルの和集合
列ベクトル文字配列を作成します。
A = ['A';'B';'C']
A = 3x1 char array
'A'
'B'
'C'
class(A)
ans = 'char'
数値型 double
の要素を含む行ベクトルを作成します。
B = [68 69 70]
B = 1×3
68 69 70
class(B)
ans = 'double'
A
と B
の union
は列ベクトル文字配列を返します。
C = union(A,B)
C = 6x1 char array
'A'
'B'
'C'
'D'
'E'
'F'
class(C)
ans = 'char'
文字と文字ベクトルの cell 配列の和集合
文字 a
、b
、c
を含む文字ベクトルを作成します。
A = ['a';'b';'c']; class(A)
ans = 'char'
文字 c
、d
、e
を含む文字ベクトルの cell 配列を作成します。
B = {'c','d','e'}; class(B)
ans = 'cell'
A
と B
の要素を組み合わせます。
C = union(A,B)
C = 5x1 cell
{'a'}
{'b'}
{'c'}
{'d'}
{'e'}
結果の C
は、文字ベクトルの cell 配列になります。
class(C)
ans = 'cell'
union のレガシ動作の保持
'legacy'
フラグを使用して、コード内の R2012b およびそれ以前のリリースの union
の動作を保持します。
現在の動作における A
と B
の和集合を求めます。
A = [5 7 1]; B = [3 1 1]; [C1,ia1,ib1] = union(A,B)
C1 = 1×4
1 3 5 7
ia1 = 3×1
3
1
2
ib1 = 1
A
と B
の和集合を検出し、レガシ動作を維持します。
A = [5 7 1];
B = [3 1 1];
[C2,ia2,ib2] = union(A,B,'legacy')
C2 = 1×4
1 3 5 7
ia2 = 1×2
1 2
ib2 = 1×2
3 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 = union([5 5 3],[1 2 5],'sorted') C = 1 2 3 5 |
'stable' |
例 C = union([5 5 3],[1 2 5],'stable') C = 5 3 1 2 |
データ型: char
| string
出力引数
C
— A
と B
を組み合わせたデータ
ベクトル | 行列 | table | timetable
A
と B
を組み合わせたデータ。ベクトル、行列、table または timetable として返されます。入力 A
および B
が table または timetable の場合、C
の変数の順番は、A
の変数の順番と同じになります。
入力がベクトルまたは行列で、'legacy'
フラグを指定していないときの C
の形状を次に説明します。
'rows'
フラグを指定していない場合、C
は列ベクトルです。例外として、A
とB
の両方が行ベクトルの場合、C
は行ベクトルになります。たとえば、union([],[1 2])
は列ベクトルを返します。'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
は、和集合に寄与する A
内の値 (または行) を示します。複数回出現する値 (または行)が A
内にある場合、ia
はその値 (または行) の最初の出現位置に対するインデックスを含みます。値が A
と B
の両方に出現する場合、ia
には A
で最初に出現する位置に対するインデックスが含まれます。
ib
— B
のインデックス
列ベクトル
'legacy'
フラグを指定していないときに列ベクトルとして返される B
のインデックス。ib
は、和集合に寄与する B
内の値 (または行) を示します。B
内だけに出現する繰り返しの値 (または行) がある場合、ib
は値 (または行) の最初の出現位置に対するインデックスを含みます。値 (または行) が A
と B
の両方に出現する場合、ib
にはその値 (または行) のインデックスは含まれません。
ヒント
table または timetable の変数のサブセットに関する和集合を求めるために、列の添字を使用できます。たとえば、
union(A(:,
を使用できます。ここで、vars
),B(:,vars
))vars
は、正の整数、正の整数のベクトル、変数名、変数名の cell 配列または logical ベクトルです。あるいはvartype
を使用して、指定したタイプの変数を選択する添字を作成することもできます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
'stable'
並べ替え順序はサポートされていません。'legacy'
フラグはサポートされていません。char
型の入力はサポートされていません。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
コード生成は最初および 2 番目の引数の cell 配列をサポートしません。
コード生成は可変サイズの行と列の間の
union
をサポートしません。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)を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
関数 union
は GPU 配列を部分的にサポートしています。この関数の一部の構文は、入力データを gpuArray
(Parallel Computing Toolbox) として指定すると、GPU で実行されます。使用上の注意事項および制限事項:
'legacy'
フラグはサポートされていません。64 ビット整数はサポートされません。
詳細については、GPU での 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)