이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

ismember

집합 배열의 구성원인 배열 요소 반환

구문

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

설명

예제

Lia = ismember(A,B)A의 데이터를 B에서 찾은 경우 논리값 1(true)를 포함하는 배열을 반환합니다. 그렇지 않으면 이 배열은 논리값 0(false)을 포함합니다.

  • AB가 table형이나 timetable형인 경우 ismember는 각 행의 논리값을 반환합니다. timetable형인 경우 ismember는 행 시간값을 고려하여 동일한지를 판별합니다. 출력값 Lia는 열 벡터입니다.

Lia = ismember(A,B,'rows')A의 각 행과 B의 각 행을 단일 엔터티로 취급하고, A의 행이 B의 행이기도 한 경우 논리값 1(true)을 포함하는 열 벡터를 반환합니다. 그렇지 않으면 이 배열은 논리값 0(false)을 포함합니다.

'rows' 옵션은 입력값 중 하나가 categorical형 배열이나 datetime형 배열이 아닌 한, 셀형 배열을 지원하지 않습니다.

예제

[Lia,Locb] = ismember(___)는 위에 열거된 구문 중 하나를 사용하여 배열 Locb도 반환합니다.

  • 일반적으로, LocbB의 구성원인 A의 각 값에 대해 B에서 가장 작은 인덱스를 포함합니다. 논리값 0AB의 구성원이 아닌 경우를 나타냅니다.

  • 'rows' 옵션을 지정하면 LocbB의 행이기도 한 A의 각 행에 대해 B에서 가장 낮은 인덱스를 포함합니다. 논리값 0AB의 행이 아닌 경우를 나타냅니다.

  • AB가 table형이나 timetable형인 경우 LocbB의 행이기도 한 A의 각 행에 대해 B에서 가장 낮은 인덱스를 포함합니다. 논리값 0AB의 행이 아닌 경우를 나타냅니다.

예제

[Lia,Locb] = ismember(___,'legacy')는 위에 열거된 구문 중 하나의 입력 인수에서 R2012b와 이전 릴리스의 ismember 함수의 동작을 유지합니다.

'legacy' 옵션은 categorical형 배열, datetime형 배열, duration형 배열, table형 또는 timetable형을 지원하지 않습니다.

예제

모두 축소

공통된 값을 갖는 두 개의 벡터를 만듭니다.

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

A의 요소 중 B에도 있는 요소를 확인합니다.

Lia = ismember(A,B)
Lia = 1x4 logical array

   0   0   1   1

A(3)A(4)B에도 있습니다.

공통된 행을 갖는 두 개의 테이블을 만듭니다.

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에도 있는 행을 확인합니다.

Lia = ismember(A,B)
Lia = 5x1 logical array

   1
   0
   1
   0
   1

A(1,:), A(3,:), A(5,:)B에도 있습니다.

공통된 값을 갖는 두 개의 벡터를 만듭니다.

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

A의 요소 중 B에도 있는 요소와, 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를 변환한 후 이 변환된 값을 다시 역변환하여 두 번째 벡터 y를 얻습니다. 이 변환 과정에서 y에 반올림 차분이 발생합니다.

x = (1:6)'*pi;
y = 10.^log10(x);

차분을 가져와서 xy가 동일하지 않은지 확인합니다.

x-y
ans = 6×1
10-14 ×

    0.0444
         0
         0
         0
         0
   -0.3553

ismember를 사용하여 x의 요소 중 y에도 있는 요소를 찾습니다. 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명의 성별, 연령, 키를 포함하는 테이블 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와 공통된 행을 갖는 테이블 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  

A의 행 중 B에도 있는 행과, B에서 해당하는 위치를 확인합니다.

[Lia,Locb] = ismember(A,B)
Lia = 5x1 logical array

   0
   0
   1
   0
   0

Locb = 5×1

     0
     0
     2
     0
     0

두 행의 이름이 달라도 값이 같으면 같은 것으로 간주됩니다. Betty에 대한 동일한 데이터가 B(2,:)에 있으며 Meg에 해당합니다.

하나의 공통된 행을 갖는 두 개의 행렬을 만듭니다.

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

A의 행 중 B에도 있는 행과, B에서 해당하는 위치를 확인합니다.

[Lia, Locb] = ismember(A,B, 'rows')
Lia = 2x1 logical array

   0
   1

Locb = 2×1

     0
     1

A(2,:)에 대한 가장 작은 인덱스는 B(1,:)입니다.

NaN을 포함하는 두 개의 벡터를 만듭니다.

A = [5 NaN NaN]; 
B = [5 NaN NaN];

A의 요소 중 B에도 있는 요소와, B에서 해당하는 위치를 확인합니다.

[Lia,Locb] = ismember(A,B)
Lia = 1x3 logical array

   1   0   0

Locb = 1×3

     1     0     0

ismemberNaN 값을 별개로 처리합니다.

문자형 벡터로 구성된 셀형 배열 A를 만듭니다.

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

일부 문자형 벡터에 후행 공백이 있는 문자형 벡터로 구성된 셀형 배열 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는 문자형 벡터로 구성된 셀형 배열에 있는 후행 공백을 별개의 문자로 취급합니다.

문자형 벡터 A와 문자형 벡터로 구성된 셀형 배열 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

R2012b를 비롯한 이전 릴리스와 동일한 방식으로 ismember 결과를 출력하려면 코드에서 'legacy' 플래그를 사용하십시오.

현재 동작으로 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

입력 인수

모두 축소

쿼리 배열로, 숫자형 배열, 논리형 배열, 문자형 배열, string형 배열, categorical형 배열, datetime형 배열, duration형 배열, 문자형 벡터로 구성된 셀형 배열, table형 또는 timetable형으로 지정됩니다. 'rows' 옵션을 지정할 경우 AB의 열 개수는 같아야 합니다.

AB와 동일한 클래스에 속해야 하며, 다음과 같은 예외가 있습니다.

  • logical, char 및 모든 숫자형 클래스는 double형 배열과 결합할 수 있습니다.

  • 문자형 벡터로 구성된 셀형 배열은 문자형 배열이나 string형 배열과 결합할 수 있습니다.

  • categorical형 배열은 문자형 배열, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열과 결합할 수 있습니다.

  • datetime형 배열은 날짜를 나타내는 문자형 벡터로 구성된 셀형 배열 또는 단일 날짜 문자형 벡터와 결합할 수 있습니다.

데이터형에 따라 AB에 대한 다음과 같은 추가 요구 사항이 있습니다.

  • AB가 모두 순서형 categorical형 배열인 경우 A와 B는 순서를 포함하여 동일한 범주 집합을 가져야 합니다. AB가 모두 순서형이 아니면 일련의 범주가 동일할 필요가 없으며 범주 이름을 사용하여 비교가 수행됩니다.

  • A가 table형이나 timetable형이면 B와 동일한 변수 이름을 가져야 합니다(순서는 제외). table형인 경우 행 이름이 무시되기 때문에 두 행의 이름이 달라도 값이 같으면 같은 것으로 간주됩니다. timetable형인 경우 행 시간값이 고려되기 때문에 두 행의 값이 같아도 시간값이 다르면 같은 것으로 간주되지 않습니다.

  • AB가 datetime형 배열이면 표준 시간대를 지정하는지 여부가 서로 일치해야 합니다.

텍스트 입력값의 경우, ismember는 일반적으로 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열의 후행 공백을 무시하지 않습니다. 그러나 ismember가 후행 공백을 무시하는 몇 가지 경우가 있습니다.

  • A가 문자형 배열이고 B가 문자형 벡터로 구성된 셀형 배열인 경우 ismember는 문자형 배열의 후행 공백을 무시합니다.

  • 'rows' 옵션이 지정되면 ismember는 문자형 벡터와 문자형 배열의 후행 공백을 무시합니다.

또한, A는 다음 클래스 메서드를 갖는 객체일 수 있습니다.

  • sort(또는 'rows' 옵션의 경우 sortrows)

  • eq

  • ne

객체 클래스 메서드는 서로 일치해야 합니다. 이 객체들은 동일한 루트 클래스에서 파생된 이종 배열을 포함합니다. 예를 들어, A는 그래픽스 객체에 대한 핸들로 구성된 배열일 수 있습니다.

세트 배열로, 숫자형 배열, 논리형 배열, 문자형 배열, string형 배열, categorical형 배열, datetime형 배열, duration형 배열, 문자형 벡터로 구성된 셀형 배열, table형 또는 timetable형으로 지정됩니다. 'rows' 옵션을 지정할 경우 AB의 열 개수는 같아야 합니다.

BA와 동일한 클래스에 속해야 하며, 다음과 같은 예외가 있습니다.

  • logical, char 및 모든 숫자형 클래스는 double형 배열과 결합할 수 있습니다.

  • 문자형 벡터로 구성된 셀형 배열은 문자형 배열이나 string형 배열과 결합할 수 있습니다.

  • categorical형 배열은 문자형 배열, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열과 결합할 수 있습니다.

  • datetime형 배열은 날짜를 나타내는 문자형 벡터로 구성된 셀형 배열 또는 단일 날짜 문자형 벡터와 결합할 수 있습니다.

데이터형에 따라 AB에 대한 다음과 같은 추가 요구 사항이 있습니다.

  • AB가 모두 순서형 categorical형 배열인 경우 A와 B는 순서를 포함하여 동일한 범주 집합을 가져야 합니다. AB가 모두 순서형이 아니면 일련의 범주가 동일할 필요가 없으며 범주 이름을 사용하여 비교가 수행됩니다.

  • B가 table형이나 timetable형이면 A와 동일한 변수 이름을 가져야 합니다(순서는 제외). table형인 경우 행 이름이 무시되기 때문에 두 행의 이름이 달라도 값이 같으면 같은 것으로 간주됩니다. timetable형인 경우 행 시간값이 고려되기 때문에 두 행의 값이 같아도 시간값이 다르면 같은 것으로 간주되지 않습니다.

  • AB가 datetime형 배열이면 표준 시간대를 지정하는지 여부가 서로 일치해야 합니다.

텍스트 입력값의 경우, ismember는 일반적으로 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열의 후행 공백을 무시하지 않습니다. 그러나 ismember가 후행 공백을 무시하는 몇 가지 경우가 있습니다.

  • A가 문자형 배열이고 B가 문자형 벡터로 구성된 셀형 배열인 경우 ismember는 문자형 배열의 후행 공백을 무시합니다.

  • 'rows' 옵션이 지정되면 ismember는 문자형 벡터와 문자형 배열의 후행 공백을 무시합니다.

또한, B는 다음 클래스 메서드를 갖는 객체일 수 있습니다.

  • sort(또는 'rows' 옵션의 경우 sortrows)

  • eq

  • ne

객체 클래스 메서드는 서로 일치해야 합니다. 이 객체들은 동일한 루트 클래스에서 파생된 이종 배열을 포함합니다. 예를 들어, B는 그래픽스 객체에 대한 핸들로 구성된 배열일 수 있습니다.

출력 인수

모두 축소

A에 대한 논리형 인덱스로, A의 값(또는 행)이 B의 구성원인 경우 항상 논리값 1(true)을 포함하는 벡터, 행렬, N차원 배열 중 하나로 반환됩니다. 그렇지 않으면 논리값 0(false)을 포함합니다.

Lia'rows' 플래그를 지정하지 않은 경우 A와 크기가 같은 배열입니다.

'rows' 플래그를 지정했거나 A가 table형이나 timetable형인 경우 LiaA와 행 개수가 동일한 열 벡터입니다.

B에서의 위치로, 벡터, 행렬, N차원 배열 중 하나로 반환됩니다. 'legacy' 플래그가 지정되지 않은 경우 LocbA에서 찾은 B의 값(또는 행)에 대한 가장 낮은 인덱스를 포함합니다. 논리값 0AB의 구성원이 아닌 경우를 나타냅니다.

Locb'rows' 플래그를 지정하지 않은 경우 A와 크기가 같은 배열입니다.

'rows' 플래그를 지정했거나 A가 table형이나 timetable형인 경우 LocbA와 행 개수가 동일한 열 벡터입니다.

  • 허용오차를 사용하여 부동소수점 숫자를 서로 비교하려면 ismembertol을 사용하십시오.

  • 변수의 부분 집합에 대해 테이블이나 타임테이블 A의 행 중 B에도 있는 행을 찾으려면 열 콜론 첨자를 사용할 수 있습니다. 예를 들어, ismember(A(:,vars),B(:,vars))를 사용할 수 있습니다. 여기서 vars는 양의 정수, 양의 정수로 구성된 벡터, 변수 이름, 변수 이름으로 구성된 셀형 배열, 논리형 벡터 중 하나일 수 있습니다. 또는 vartype을 사용하여, 지정된 유형의 변수를 선택하는 첨자를 만들 수 있습니다.

확장 기능

R2006a 이전에 개발됨