주요 콘텐츠

combinations

배열의 모든 요소 조합 생성

R2023a 이후

    설명

    T = combinations(A1,...,An)은 입력 배열 A1,...,An의 모든 요소 조합을 생성합니다. 여기서 출력 테이블 T의 각 행이 하나의 조합이 됩니다. 그러한 조합은 n개 요소 집합의 카테시안 곱과 동일합니다. 여기서 n개 집합은 입력 배열 A1,...,An으로 표현됩니다.

    • T의 행 개수는 각 입력 배열의 요소 개수의 곱입니다. 행 개수는 조합 개수와 동일합니다.

    • T의 변수 개수는 입력 배열의 개수와 동일합니다.

    • T에 포함된 각 변수의 데이터형은 해당 입력 배열의 데이터형과 동일합니다.

    예제

    예제

    모두 축소

    두 벡터의 모든 요소 조합을 생성합니다. 출력 테이블 T의 각 행은 첫 번째 벡터에서의 첫 번째 요소와 두 번째 벡터에서의 두 번째 요소의 조합입니다. 변수 Var1에는 첫 번째 벡터의 요소가 들어 있고, 변수 Var2에는 두 번째 벡터의 요소가 들어 있습니다.

    T = combinations([1 8 6],[9 3 2])
    T=9×2 table
        Var1    Var2
        ____    ____
    
         1       9  
         1       3  
         1       2  
         8       9  
         8       3  
         8       2  
         6       9  
         6       3  
         6       2  
    
    

    두 배열의 모든 요소 조합을 생성합니다. combinations 함수는 요소 조합 생성 전에 각 입력값을 열 벡터 입력값으로 형태 변경합니다.

    T = combinations([7 3;2 6],[9 1 4])
    T=12×2 table
        Var1    Var2
        ____    ____
    
         7       9  
         7       1  
         7       4  
         2       9  
         2       1  
         2       4  
         3       9  
         3       1  
         3       4  
         6       9  
         6       1  
         6       4  
    
    

    3개 string형 배열의 모든 요소 조합을 생성합니다. 출력 테이블의 변수 이름은 string형 배열의 이름을 기반으로 합니다.

    ID = ["A" "B" "C"];
    color = ["red" "blue" "green"];
    sz = ["small" "large"];
    
    T = combinations(ID,color,sz)
    T=18×3 table
        ID      color       sz   
        ___    _______    _______
    
        "A"    "red"      "small"
        "A"    "red"      "large"
        "A"    "blue"     "small"
        "A"    "blue"     "large"
        "A"    "green"    "small"
        "A"    "green"    "large"
        "B"    "red"      "small"
        "B"    "red"      "large"
        "B"    "blue"     "small"
        "B"    "blue"     "large"
        "B"    "green"    "small"
        "B"    "green"    "large"
        "C"    "red"      "small"
        "C"    "red"      "large"
        "C"    "blue"     "small"
        "C"    "blue"     "large"
          ⋮
    
    

    각 조합에 있는 요소를 결합하여 데이터 레이블을 생성합니다. 중괄호 {}를 사용하여 테이블 T의 내용을 추출하고 join을 사용하여 행에 있는 요소를 결합합니다.

    labels = join(T{:,:},"_")
    labels = 18×1 string
        "A_red_small"
        "A_red_large"
        "A_blue_small"
        "A_blue_large"
        "A_green_small"
        "A_green_large"
        "B_red_small"
        "B_red_large"
        "B_blue_small"
        "B_blue_large"
        "B_green_small"
        "B_green_large"
        "C_red_small"
        "C_red_large"
        "C_blue_small"
        "C_blue_large"
        "C_green_small"
        "C_green_large"
    
    

    서로 다른 크기와 데이터형을 갖는 입력값의 모든 요소 조합을 생성합니다.

    출력 테이블 T에 포함된 행의 개수는 numel(A1), numel(A2), numel(A3)의 곱과 같습니다. 출력 테이블 T의 각 변수의 데이터형은 해당 입력값의 데이터형과 동일합니다.

    A1 = [0 1; 2 3];
    A2 = ["a" "b" "c"];
    A3 = categorical(["x" "y"]);
    T = combinations(A1,A2,A3)
    T=24×3 table
        A1    A2     A3
        __    ___    __
    
        0     "a"    x 
        0     "a"    y 
        0     "b"    x 
        0     "b"    y 
        0     "c"    x 
        0     "c"    y 
        2     "a"    x 
        2     "a"    y 
        2     "b"    x 
        2     "b"    y 
        2     "c"    x 
        2     "c"    y 
        1     "a"    x 
        1     "a"    y 
        1     "b"    x 
        1     "b"    y 
          ⋮
    
    

    입력 인수

    모두 축소

    입력 배열로, 쉼표로 구분된 스칼라, 벡터, 행렬 또는 다차원 배열 목록으로 지정됩니다. 입력 배열은 크기와 데이터형이 서로 다를 수 있습니다.

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | datetime | duration | calendarDuration | categorical | cell
    복소수 지원 여부:

    • categorical형 배열

      입력 배열이 categorical형 배열인 경우 입력값의 모든 조합을 범주로 갖는 다른 categorical형 배열을 생성하고자 할 수 있습니다. combinations 함수는 테이블의 모든 조합을 반환하므로 .* 연산자를 대신 사용해 보십시오.

      예를 들어, 두 개의 categorical형 배열을 만들고 .* 연산자를 호출합니다.

      colors = categorical(["blue" "red" "green" "black"]);
      signs = categorical(["+" "-" "-" "+"]);
      C = colors .* signs
      
      C = 
      
        1×4 categorical array
      
           blue +      red -      green -      black + 
      

      결과는 범주가 입력값 범주의 모든 조합인 categorical형 배열입니다. categories 함수를 사용하여 범주를 나열합니다.

      categories(C)
      
      ans =
      
        8×1 cell array
      
          {'black +'}
          {'black -'}
          {'blue +' }
          {'blue -' }
          {'green +'}
          {'green -'}
          {'red +'  }
          {'red -'  }
      

    버전 내역

    R2023a에 개발됨