このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ismember
集合配列のメンバーである配列要素
構文
説明
[
は、前述の任意の構文を使用して、配列 Lia
,Locb
] = ismember(___)Locb
も返します。
一般的に、
Locb
にはB
のメンバーであるA
の各値に対するB
の最小インデックスが含まれます。値0
はA
がB
のメンバーではないことを示します。'rows'
オプションが指定されている場合、Locb
には、B
の行でもあるA
の行ごとにB
の最小インデックスが含まれます。値0
はA
がB
の行ではないことを示します。A
とB
が table または timetable の場合、Locb
には、B
の行でもあるA
の行ごとにB
の最小インデックスが含まれます。値0
はA
がB
の行ではないことを示します。
例
集合内のメンバーである値
共通の値をもつ 2 つのベクトルを作成します。
A = [5 3 4 2]; B = [2 4 4 4 6 8];
B
にある A
の要素を判別します。
Lia = ismember(A,B)
Lia = 1x4 logical array
0 0 1 1
A(3)
と A(4)
は、B
にあります。
別のテーブル内に存在するテーブル行
共通の行をもつ 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
B
にある A
の行を判別します。
Lia = ismember(A,B)
Lia = 5x1 logical array
1
0
1
0
1
A(1,:)
、A(3,:)
および A(5,:)
は、B
にあります。
集合内のメンバーと値へのインデックス
共通の値をもつ 2 つのベクトルを作成します。
A = [5 3 4 2]; B = [2 4 4 4 6 8];
B
にある A
の要素と B
内の対応する場所を判別します。
[Lia,Locb] = ismember(A,B)
Lia = 1x4 logical array
0 0 1 1
Locb = 1×4
0 0 2 1
A(3)
への最小のインデックスは B(2)
で、A(4)
は B(1)
に存在します。
数値誤差がある場合の集合メンバー
ベクトル x
を作成します。x
の変換と復元を実行して、2 番目のベクトル y
を取得します。この変換により y
で丸め誤差が生じます。
x = (1:6)'*pi; y = 10.^log10(x);
この誤差を求め、x
と y
が同一でないことを検証します。
x-y
ans = 6×1
10-14 ×
0.0444
0
0
0
0
-0.3553
ismember
を使用して、y
に含まれる x
の要素を検索します。関数 ismember
は厳密な比較を実行し、x
にある行列要素の一部が y
に含まれないことを判別します。
lia = ismember(x,y)
lia = 6x1 logical array
0
1
1
1
1
0
ismembertol
を使用して、わずかな誤差が許される比較を実行します。ismembertol
は、許容誤差内の要素を等価として扱い、x
内のすべての要素が y
のメンバーであると判断します。
LIA = ismembertol(x,y)
LIA = 6x1 logical array
1
1
1
1
1
1
別のテーブルの行とその場所
5 人の性別、年齢および身長の table A
を作成します。
A = table(['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
と共通する行をもつもう 1 つの table B
を作成します。
B = table(['M';'F';'F';'F'],[47;31;35;23],[68;64;62;58],... 'VariableNames',{'Gender' 'Age' 'Height'},... 'RowNames',{'Joe' 'Meg' 'Beth' 'Amy'})
B=4×3 table
Gender Age Height
______ ___ ______
Joe M 47 68
Meg F 31 64
Beth F 35 62
Amy F 23 58
B
にある A
の行と B
内の対応する場所を判別します。
[Lia,Locb] = ismember(A,B)
Lia = 5x1 logical array
0
0
1
0
0
Locb = 5×1
0
0
2
0
0
値が同じで名前が異なる 2 つの行は、等しいと見なされます。Betty
の同じデータが B(2,:)
にあります。これは Meg
に対応しています。
集合に属する行
共通の行をもつ 2 つの行列を作成します。
A = [1 3 5 6; 2 4 6 8]; B = [2 4 6 8; 1 3 5 7; 2 4 6 8];
B
にある A
の行と B
内の対応する場所を判別します。
[Lia, Locb] = ismember(A,B, 'rows')
Lia = 2x1 logical array
0
1
Locb = 2×1
0
1
A(2,:)
への最小のインデックスは B(1,:)
です。
NaN 値を含む集合内のメンバー
NaN
を含む 2 つのベクトルを作成します。
A = [5 NaN NaN]; B = [5 NaN NaN];
B
にある A
の要素と B
内の対応する場所を判別します。
[Lia,Locb] = ismember(A,B)
Lia = 1x3 logical array
1 0 0
Locb = 1×3
1 0 0
ismember
は NaN
値を個別のものとして処理します。
末尾が空白文字の文字ベクトルの cell 配列
文字ベクトルの cell 配列 A
を作成します。
A = {'dog','cat','fish','horse'};
文字ベクトルの cell 配列 B
を作成します。一部のベクトルは末尾に空白文字があります。
B = {'dog ','cat','fish ','horse'};
A
内のどの文字ベクトルが B
にも存在するかを判別します。
[Lia,Locb] = ismember(A,B)
Lia = 1x4 logical array
0 1 0 1
Locb = 1×4
0 2 0 4
ismember
は、文字ベクトルの cell 配列内の末尾の空白文字を別個の文字として処理します。
文字ベクトルと文字ベクトルの cell 配列のメンバー
文字ベクトル A
と文字ベクトルの cell 配列 B
を作成します。
A = ['cat';'dog';'fox';'pig']; B = {'dog','cat','fish','horse'};
A
内のどの文字ベクトルが B
にも存在するかを判別します。
[Lia,Locb] = ismember(A,B)
Lia = 4x1 logical array
1
1
0
0
Locb = 4×1
2
1
0
0
ismember のレガシ動作の保持
'legacy'
フラグを使用して、コード内の R2012b およびそれ以前のリリースの ismember
の動作を保持します。
現在の動作における B
のメンバーを検出します。
A = [5 3 4 2]; B = [2 4 4 4 6 8]; [Lia1,Locb1] = ismember(A,B)
Lia1 = 1x4 logical array
0 0 1 1
Locb1 = 1×4
0 0 2 1
B
のメンバーを検出し、レガシ動作を保持します。
[Lia2,Locb2] = ismember(A,B,'legacy')
Lia2 = 1x4 logical array
0 0 1 1
Locb2 = 1×4
0 0 4 1
入力引数
A
— クエリ配列
数値配列 | logical 配列 | 文字配列 | string 配列 | categorical 配列 | datetime 配列 | duration 配列 | 文字ベクトルの cell 配列 | table | timetable
クエリ配列。数値配列、logical 配列、文字配列、string 配列、categorical 配列、datetime 配列、duration 配列、文字ベクトルの cell 配列、table または timetable として指定します。'rows'
オプションを指定した場合、A
および B
は同じ数の列をもたなければなりません。
A
は次の例外がありますが、B
と同じクラスに属さなければなりません。
logical
、char
、およびすべての数値クラスはdouble
配列と組み合わせることができます。文字ベクトルの cell 配列は、文字配列または string 配列と組み合わせることができます。
categorical 配列は、文字配列、文字ベクトルの cell 配列または string 配列と組み合わせることができます。
datetime 配列は、日付文字ベクトルの cell 配列または単一の日付文字ベクトルと組み合わせることができます。
A
と B
には、データ型に基づく追加の要件があります。
A
とB
の両方が順序 categorical 配列である場合は、順序を含めて同じカテゴリ セットでなければなりません。A
とB
の両方が順序配列でない場合、同じカテゴリ セットをもつ必要はなく、カテゴリ名を使用して比較が実行されます。A
が table または timetable の場合は、順序を除き、B
と同じ変数名でなければなりません。table の場合、行名は無視されるため、値が同じで名前が異なる 2 つの行は等しいと見なされます。timetable の場合、行時間が考慮されるため、値が同じで時間が異なる 2 つの行は、等しくないと見なされます。A
とB
が datetime 配列の場合、タイム ゾーンの指定が互いに一貫していなければなりません。
テキスト入力の場合、通常 ismember
は文字ベクトル、文字ベクトルの cell 配列、および string 配列内の末尾の空白を無視しません。ただし、ismember
が末尾の空白を無視する場合がいくつかあります。
A
が文字配列で、かつB
が文字ベクトルの cell 配列である場合、ismember
は文字配列内の末尾の空白を無視します。'rows'
オプションが指定された場合、ismember
は文字ベクトルと文字配列内の末尾の空白を無視します。
また、A
は次のクラス メソッドをもつオブジェクトにすることもできます。
sort
(または'rows'
オプションのsortrows
)eq
ne
オブジェクト クラスのメソッドは、相互に一貫していなければなりません。これらのオブジェクトは、同じルート クラスから導出した異種混合配列を含みます。たとえば、A
はグラフィックス オブジェクトのハンドルの配列にすることができます。
B
— 集合配列
数値配列 | logical 配列 | 文字配列 | string 配列 | categorical 配列 | datetime 配列 | duration 配列 | 文字ベクトルの cell 配列 | table | timetable
集合配列。数値配列、logical 配列、文字配列、string 配列、categorical 配列、datetime 配列、duration 配列、文字ベクトルの cell 配列、table または timetable として指定します。'rows'
オプションを指定した場合、A
および B
は同じ数の列をもたなければなりません。
B
は次の例外がありますが、A
と同じクラスに属さなければなりません。
logical
、char
、およびすべての数値クラスはdouble
配列と組み合わせることができます。文字ベクトルの cell 配列は、文字配列または string 配列と組み合わせることができます。
categorical 配列は、文字配列、文字ベクトルの cell 配列または string 配列と組み合わせることができます。
datetime 配列は、日付文字ベクトルの cell 配列または単一の日付文字ベクトルと組み合わせることができます。
A
と B
には、データ型に基づく追加の要件があります。
A
とB
の両方が順序 categorical 配列である場合は、順序を含めて同じカテゴリ セットでなければなりません。A
とB
の両方が順序配列でない場合、同じカテゴリ セットをもつ必要はなく、カテゴリ名を使用して比較が実行されます。B
が table または timetable の場合は、順序を除き、A
と同じ変数名でなければなりません。table の場合、行名は無視されるため、値が同じで名前が異なる 2 つの行は等しいと見なされます。timetable の場合、行時間が考慮されるため、値が同じで時間が異なる 2 つの行は、等しくないと見なされます。A
とB
が datetime 配列の場合、タイム ゾーンの指定が互いに一貫していなければなりません。
テキスト入力の場合、通常 ismember
は文字ベクトル、文字ベクトルの cell 配列、および string 配列内の末尾の空白を無視しません。ただし、ismember
が末尾の空白を無視する場合がいくつかあります。
A
が文字配列で、かつB
が文字ベクトルの cell 配列である場合、ismember
は文字配列内の末尾の空白を無視します。'rows'
オプションが指定された場合、ismember
は文字ベクトルと文字配列内の末尾の空白を無視します。
また、B
は次のクラス メソッドをもつオブジェクトにすることもできます。
sort
(または'rows'
オプションのsortrows
)eq
ne
オブジェクト クラスのメソッドは、相互に一貫していなければなりません。これらのオブジェクトは、同じルート クラスから導出した異種混合配列を含みます。たとえば、B
はグラフィックス オブジェクトのハンドルの配列にすることができます。
出力引数
Lia
— A
への論理インデックス
ベクトル | 行列 | N 次元配列
A
への論理インデックス。A
の値 (または行) が B
のメンバーである場合に、logical 1
(true
) を含むベクトル、行列または N 次元配列として返されます。それ以外の場合、logical 0
(false
) が含まれます。
'rows'
フラグを指定しない限り、Lia
は A
と同じサイズの配列です。
'rows'
フラグを指定するか、A
が table または timetable の場合、Lia
は A
と同じ行数をもつ列ベクトルになります。
Locb
— B
内の場所
ベクトル | 行列 | N 次元配列
B
内の場所。ベクトル、行列または N 次元配列として返されます。'legacy'
フラグを指定しない場合、Locb
は、A
内に見つかった B
内の値 (または行) に対する最小のインデックスを含みます。値 0
は A
が B
のメンバーではないことを示します。
'rows'
フラグを指定しない限り、Locb
は A
と同じサイズの配列です。
'rows'
フラグを指定するか、A
が table または timetable の場合、Locb
は A
と同じ行数をもつ列ベクトルになります。
ヒント
許容誤差を使用して浮動小数点数を比較するには
ismembertol
を使用します。変数のサブセットに関して、table または timetable
A
とB
で共通する行を検出するには、列の添字を使用できます。たとえば、ismember(A(:,
を使用できます。ここで、vars
),B(:,vars
))vars
は、正の整数、正の整数のベクトル、変数名、変数名の cell 配列または logical ベクトルです。あるいはvartype
を使用して、指定したタイプの変数を選択する添字を作成することもできます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
A
とB
がどちらも tall 配列である場合、1 次元に適用されたリダクション演算の結果でなければなりません (sum
、prod
、max
など)。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
コード生成は最初および 2 番目の引数の cell 配列をサポートしません。
複素数入力は、
single
またはdouble
でなければなりません。ゼロ値の虚数部をもつ複素数データのコード生成 (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'
フラグはサポートされていません。
詳細については、分散配列を使用した 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)