ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ismember

集合配列のメンバーである配列要素

構文

  • Lia = ismember(A,B)
  • Lia = ismember(A,B,'rows')
  • [Lia,Locb] = ismember(A,B)
  • [Lia,Locb] = ismember(A,B,'rows')
  • [Lia,Locb] = ismember(___,'legacy')

説明

Lia = ismember(A,B) は、1 (true) を含む配列を返します。ここで、A 内のデータは B にあります。それ以外の場合は 0 (false) を返します。

  • AB が数値配列、論理配列、文字配列、カテゴリカル配列または文字列のセル配列の場合、ismember は、A の各要素に対して論理値を返します。出力 Lia は、A と同じサイズの配列です。

  • AB がテーブルの場合、ismember は、A の各行に対して論理値を返します。出力 Lia は、A と同じ行数の列ベクトルです。

Lia = ismember(A,B,'rows') は、A の各行および B の各行を個別のエンティティとして扱い、1 (true) を含む列ベクトルを返します。ここで、A の行は B の行でもあります。それ以外の場合は 0 (false) を返します。

'rows' オプションを使用したときは、AB は同じ列数でなければなりません。さらに、'rows' オプションはセル配列をサポートしません。

[Lia,Locb] = ismember(A,B) は配列 Locb も返します。

  • AB が数値配列、論理配列、文字配列、カテゴリカル配列または文字列のセル配列の場合、Locb には B のメンバーでもある A の行ごとに B の最小インデックスが含まれます。AB のメンバーでない場合、出力配列 Locb0 を含みます。

  • AB がテーブルの場合、Locb には、B の行でもある A の行ごとに B の最小インデックスが含まれます。AB の行でない場合、出力ベクトル Locb は常に 0 を含みます。

[Lia,Locb] = ismember(A,B,'rows') も、B の行でもある A の行ごとに B の最小インデックスが含まれている、列ベクトル Locb を返します。. AB の行でない場合、出力ベクトル Locb0 を含みます。

[Lia,Locb] = ismember(___,'legacy') は、前出の構文の入力引数のいずれかを使用して、R2012b 以前のリリースの関数 ismember の動作を保持します。

'legacy' オプションはカテゴリカル配列またはテーブルをサポートしません。

すべて展開する

集合内のメンバーである値

共通の値をもつ 2 つのベクトルを定義します。

A = [5 3 4 2]; B = [2 4 4 4 6 8];

B にある A の要素を判別します。

Lia = ismember(A,B)
Lia =

     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]))
B = table([1:2:10]',['A';'C';'E';'G';'I'],logical(zeros(5,1)))
A = 

    Var1    Var2    Var3 
    ----    ----    -----
    1       A       false
    2       B       true 
    3       C       false
    4       D       true 
    5       E       false


B = 

    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 =

     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 =

     0     0     1     1

Locb =

     0     0     2     1

A(3) への最小のインデックスは B(2) です。

A(4)B(1) にあります。

別のテーブルの行とその場所

5 人の性別、年齢および身長のテーブル 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 = 

             Gender    Age    Height
             ------    ---    ------
    Ted      M         27     74    
    Fred     M         52     68    
    Betty    F         31     64    
    Bob      M         46     61    
    Judy     F         35     64    

A と行を共有するテーブル 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 = 

            Gender    Age    Height
            ------    ---    ------
    Meg     F         31     64    
    Joe     M         47     68    
    Beth    F         35     62    
    Amy     F         23     58    

B にある A の行と B 内の対応する場所を判別します。

[Lia,Locb] = ismember(A,B)
Lia =

     0
     0
     1
     0
     0


Locb =

     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 =

     0
     1


Locb =

     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 =

     1     0     0


Locb =

     1     0     0

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

末尾に空白文字がある文字列のセル配列

文字列のセル配列 A を作成します。

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

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

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

B にある A の文字列を判別します。

[Lia,Locb] = ismember(A,B)
Lia =

     0     1     0     1


Locb =

     0     2     0     4

ismember は、文字列のセル配列内の末尾の空白文字を別個の文字として処理します。

文字配列と文字列のセル配列のメンバー

文字配列 A を作成します。

A = ['cat';'dog';'fox';'pig'];

文字列のセル配列 B を作成します。

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

B にある A の文字列を判別します。

[Lia,Locb] = ismember(A,B)
Lia =

     1
     1
     0
     0


Locb =

     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 =

     0     0     1     1

Locb1 =

     0     0     2     1

B のメンバーを検出し、レガシ動作を保持します。

[Lia2,Locb2] = ismember(A,B,'legacy')
Lia2 =

     0     0     1     1

Locb2 =

     0     0     4     1

入力引数

すべて展開する

A - クエリ配列数値配列 | 論理配列 | 文字配列 | カテゴリカル配列 | 文字列のセル配列 | テーブル

クエリ配列。数値配列、論理配列、文字配列、カテゴリカル配列、文字列のセル配列またはテーブルとして指定します。

A は次の例外がありますが、B と同じクラスに属さなければなりません。

  • logicalchar、およびすべての数値クラスは double 配列と組み合わせることができます。

  • 文字列のセル配列は char 配列と組み合わせることができます。

  • カテゴリカル配列は、文字列のセル配列または単一の文字列と組み合わせることができます。

AB の両方が順序カテゴリカル配列である場合は、順序を含めて同じカテゴリ セットでなければなりません。AB の両方が順序配列でない場合、同じカテゴリ セットをもつ必要はなく、カテゴリ名を使用して比較が実行されます。

'rows' オプションを指定した場合、AB と同じ数の列をもたなければなりません。

A がテーブルの場合は、変数名は B と同じでなければなりません。反対に、行の名前は問題ではありません。値が同じで名前が異なる 2 つの行は、等しいと見なされます。

さらに、A は次のクラス メソッドをもつオブジェクトにすることができます。

  • sort (または 'rows' オプションの sortrows)

  • eq

  • ne

オブジェクト クラスのメソッドは、相互に一貫していなければなりません。これらのオブジェクトは、同じルート クラスから導出した異なるタイプの配列を含みます。

B - 設定配列数値配列 | 論理配列 | 文字配列 | カテゴリカル配列 | 文字列のセル配列 | テーブル

集合配列。数値配列、論理配列、文字配列、カテゴリカル配列、文字列のセル配列またはテーブルとして指定します。

B は次の例外がありますが、A と同じクラスに属さなければなりません。

  • logicalchar、およびすべての数値クラスは double 配列と組み合わせることができます。

  • 文字列のセル配列は char 配列と組み合わせることができます。

  • カテゴリカル配列は、文字列のセル配列または単一の文字列と組み合わせることができます。

AB の両方が順序カテゴリカル配列である場合は、順序を含めて同じカテゴリ セットでなければなりません。AB の両方が順序配列でない場合、同じカテゴリ セットをもつ必要はなく、カテゴリ名を使用して比較が実行されます。

'rows' オプションを指定した場合、BA と同じ数の列をもたなければなりません。

B がテーブルの場合は、A と同じ変数名でなければなりません。反対に、行の名前は問題ではありません。値が同じで名前が異なる 2 つの行は、等しいと見なされます。

さらに、B は次のクラス メソッドをもつオブジェクトにすることができます。

  • sort (または 'rows' オプションの sortrows)

  • eq

  • ne

オブジェクト クラスのメソッドは、相互に一貫していなければなりません。これらのオブジェクトは、同じルート クラスから導出した異なるタイプの配列を含みます。

出力引数

すべて展開する

Lia - A への論理インデックスベクトル | 行列 | N 次元配列

A への論理インデックス。1 (true) を含むベクトル、行列または N 次元配列として返されます。ここで、A の値 (または行) は B のメンバーです。それ以外の場合は 0 (false) を返します。

'rows' フラグを指定しない限り、LiaA と同じサイズの配列です。

'rows' フラグを指定するか、A がテーブルの場合、LiaA と同じ行数をもつ列ベクトルになります。

Locb - B 内の場所ベクトル | 行列 | N 次元配列

B 内の場所。ベクトル、行列または N 次元配列として返されます。'legacy' フラグを指定しない場合、Locb は、A 内に見つかった B 内の値 (または行) に対する最小のインデックスを含みます。Locb は、AB のメンバーでない場合に 0 を含みます。

'rows' フラグを指定しない限り、LocbA と同じサイズの配列です。

'rows' フラグを指定するか、A がテーブルの場合、LocbA と同じ行数をもつ列ベクトルになります。

詳細

すべて展開する

ヒント

  • 変数のサブセットに関して、テーブル AB で共通する行を検出するには、列の添字を使用できます。たとえば、ismember(A(:,vars),B(:,vars)) を使用できます。ここで、vars は、正の整数、正の整数のベクトル、変数名、変数名のセル配列または論理ベクトルです。

参考

| | | | | |

この情報は役に立ちましたか?