Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

intersect

두 배열의 교집합

설명

C = intersect(A,B)AB에 모두 공통된 데이터를 반복하지 않고 반환합니다. C는 정렬된 순서로 표시됩니다.

  • AB가 table형이나 timetable형인 경우 intersect는 두 테이블에 모두 공통된 행 집합을 반환합니다. 타임테이블인 경우 intersect는 동일한지를 판별하는데 행 시간값을 고려하여 행 시간값을 기준으로 출력 타임테이블 C를 정렬합니다.

예제

C = intersect(A,B,setOrder)C를 특정 순서로 반환합니다. setOrder'sorted' 또는 'stable'일 수 있습니다.

예제

C = intersect(A,B,___,'rows')C = intersect(A,B,'rows',___)A의 각 행과 B의 각 행을 단일 엔터티로 취급하고 AB에 모두 공통된 행을 반복 없이 반환합니다. AB는 반드시 지정해야 하며, setOrder를 선택적으로 지정할 수 있습니다.

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

[C,ia,ib] = intersect(___)는 위에 열거된 구문 중 하나를 사용하여 인덱스 벡터 iaib도 반환합니다.

  • 일반적으로, C = A(ia)이고 C = B(ib)입니다.

  • 'rows' 옵션을 지정하면 C = A(ia,:)이고 C = B(ib,:)가 됩니다.

  • AB가 table형이나 timetable형이면 C = A(ia,:)이고 C = B(ib,:)입니다.

예제

[C,ia,ib] = intersect(A,B,'legacy')[C,ia,ib] = intersect(A,B,'rows','legacy')intersect 함수를 R2012b 및 이전 릴리스처럼 실행시킵니다.

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

예제

예제

모두 축소

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

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

AB에 모두 공통된 값을 찾습니다.

C = intersect(A,B)
C = 1×2

     4     7

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

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

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

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

AB에 모두 공통된 값뿐만 아니라 C = A(ia)가 되고 C = B(ib)가 되는 인덱스 벡터 iaib를 구합니다.

[C,ia,ib] = intersect(A,B)
C = 1×2

     4     7

ia = 2×1

     5
     1

ib = 2×1

     3
     1

5명의 성별, 연령, 키를 포함하는 테이블 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와 공통된 행을 갖는 테이블 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,:)이 되는 인덱스 벡터 iaib를 구합니다.

[C,ia,ib] = intersect(A,B)
C=1×3 table
             Gender    Age    Height
             ______    ___    ______

    Betty      F       31       64  

ia = 3
ib = 1

두 행의 이름이 달라도 값이 같으면 같은 것으로 간주됩니다. 위 결과에 따라, Betty A(3,:)과 Meg B(1,:)은 동일한 성별, 연령, 키를 가진 걸로 파악할 수 있습니다.

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

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,:)이 되는 인덱스 벡터 iaib를 구합니다.

[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을 포함하는 두 개의 벡터를 만듭니다.

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

AB에 모두 공통된 값을 찾습니다.

C = intersect(A,B)
C = 5

intersect는 각각의 NaN 값을 서로 다른 값으로 취급합니다.

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

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

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

열 벡터 문자형 배열을 만듭니다.

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'

세 글자로 된 동물 이름을 포함하는 문자형 벡터를 만듭니다.

A = ['dog';'cat';'fox';'pig'];
class(A)
ans = 
'char'

다양한 길이의 동물 이름을 포함하는 문자형 벡터로 구성된 셀형 배열을 만듭니다.

B = {'cat','dog','fish','horse'};
class(B)
ans = 
'cell'

AB에 모두 공통된 문자형 벡터를 찾습니다.

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

결과 C는 문자형 벡터로 구성된 셀형 배열입니다.

class(C)
ans = 
'cell'

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

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

입력 인수

모두 축소

입력 배열. 'rows' 옵션을 지정할 경우 AB는 열 개수가 같아야 합니다.

AB는 동일한 클래스여야 하며, 다음과 같은 예외가 있습니다.

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

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

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

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

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

  • AB가 모두 순서형 categorical형 배열인 경우 A와 B는 순서를 포함하여 동일한 범주 집합을 가져야 합니다. AB가 모두 순서형이 아니면 범주 집합이 동일할 필요가 없으며 범주 이름을 사용하여 비교가 수행됩니다. 이 경우, C의 범주에는 A의 범주가 먼저 열거되고 이어서 A에 있지 않은 B의 범주가 열거됩니다. 이러한 범주는 AB의 순서와 동일하고 범주 순서는 C를 정렬하는 데 사용됩니다.

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

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

AB는 다음 클래스 메서드를 갖는 객체일 수도 있습니다.

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

  • ne

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

순서 플래그는 '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

출력 인수

모두 축소

AB에 공통된 데이터로, 벡터, 행렬, 테이블 중 하나로 반환됩니다. 입력 인수 AB가 table형 또는 timetable형인 경우 C의 변수 순서는 A의 변수 순서와 동일합니다.

입력값이 벡터 또는 행렬이면서 'legacy' 플래그가 지정되지 않은 경우 C의 형태는 다음과 같습니다.

  • 'rows' 플래그가 지정되지 않은 경우 AB 중 하나라도 행 벡터가 아니면 C는 열 벡터가 됩니다(A와 B가 둘 다 행 벡터이면 C는 행 벡터가 됨).

  • 'rows' 플래그가 지정되지 않은 경우 CAB의 공통된 행을 포함하는 행렬입니다.

입력값 AB의 클래스에 따라 C의 클래스가 달라집니다.

  • AB의 클래스가 동일하면 C도 동일한 클래스가 됩니다.

  • char형 또는 비double형 숫자형 클래스를 double형과 결합할 경우 C는 비double형 입력값과 동일한 클래스가 됩니다.

  • logical형 클래스를 double형과 결합할 경우 Cdouble형이 됩니다.

  • 문자형 벡터로 구성된 셀형 배열을 char형과 결합할 경우 C는 문자형 벡터로 구성된 셀형 배열이 됩니다.

  • categorical형 배열을 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, 또는 string형과 결합할 경우 C는 categorical형 배열이 됩니다.

  • datetime형 배열을 날짜 문자형 벡터로 구성된 셀형 배열이나 단일 날짜 문자형 벡터와 결합할 경우 C는 datetime형 배열이 됩니다.

  • string형 배열을 문자형 벡터로 구성된 셀형 배열 또는 문자형 벡터와 결합할 경우 C는 string형 배열이 됩니다.

A에 대한 인덱스로, 'legacy' 플래그가 지정되지 않은 경우 열 벡터로 반환됩니다. iaA에서 B에 공통된 값(또는 행)을 식별합니다. A에 반복되는 값(또는 행)이 있으면 ia는 처음 나오는 값(또는 행)에 대한 인덱스를 포함합니다.

B에 대한 인덱스로, 'legacy' 플래그가 지정되지 않은 경우 열 벡터로 반환됩니다. ibB에서 A에 공통된 값(또는 행)을 식별합니다. B에 반복되는 값(또는 행)이 있으면 ib는 처음 나오는 값(또는 행)에 대한 인덱스를 포함합니다.

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

확장 기능

스레드 기반 환경
MATLAB®의 backgroundPool을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool을 사용해 코드 실행 속도를 높일 수 있습니다.

버전 내역

R2006a 이전에 개발됨