주요 콘텐츠

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 
          ⋮
    
    

    여러 개의 파라미터에 대한 요소 조합 테이블을 생성하고 rowfun 함수를 사용하여 각 행에 함수를 적용할 수 있습니다. combinations 함수와 rowfun 함수를 함께 사용하여 각 조합의 결과를 효율적으로 계산하고 구성합니다.

    Percentage 파라미터와 Method 파라미터로 가능한 모든 조합을 포함하는 테이블을 생성합니다.

    Percentage = [25; 75];
    Method = ["midpoint"; "inclusive"; "exclusive"];
    T = combinations(Percentage,Method)
    T=6×2 table
        Percentage      Method   
        __________    ___________
    
            25        "midpoint" 
            25        "inclusive"
            25        "exclusive"
            75        "midpoint" 
            75        "inclusive"
            75        "exclusive"
    
    

    rowfun 함수를 사용하여 테이블의 각 행에 prctile 함수를 적용합니다. rowfun은 각 파라미터 조합의 결과 백분위수를 포함하는 테이블을 반환합니다.

    A = rand(13,1);
    T2 = rowfun(@(p,m) prctile(A,p,Method=m),T, ...
    OutputVariableNames="Percentile");

    결과를 파라미터 조합 테이블에 추가하여 각 출력값이 어떤 파라미터 값에서 생성되었는지 확인할 수 있습니다.

    T3 = [T T2]
    T3=6×3 table
        Percentage      Method       Percentile
        __________    ___________    __________
    
            25        "midpoint"      0.24828  
            25        "inclusive"      0.2785  
            25        "exclusive"     0.21806  
            75        "midpoint"      0.95725  
            75        "inclusive"     0.95717  
            75        "exclusive"     0.95734  
    
    

    입력 인수

    모두 축소

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

    데이터형: 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에 개발됨