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

varfun

함수를 테이블 또는 타임테이블 변수에 적용

구문

B = varfun(func,A)
B = varfun(func,A,Name,Value)

설명

예제

B = varfun(func,A)func 함수를 개별적으로 테이블 또는 타임테이블 A의 각 변수에 적용하고 그 결과를 테이블 또는 타임테이블 B에 반환합니다.

함수 func는 호출될 때마다 입력 인수를 하나 가져와서 같은 개수의 행을 포함한 배열을 반환해야 합니다. 출력 인수의 i번째 변수 B{:,i}func(A{:,i})와 같습니다.

A가 타임테이블이고 func 함수가 행 그룹에서 데이터를 집계하는 경우, varfunA의 각 행 그룹의 첫 번째 행 시간값을 B의 대응하는 행 시간값으로 할당합니다. B를 행 시간값이 없는 테이블로 반환하려면 'OutputFormat''table'로 지정하십시오.

예제

B = varfun(func,A,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 옵션을 사용하여 테이블 또는 타임테이블 A의 각 변수에 개별적으로 함수 func를 적용합니다.

예를 들어, 함수에 전달할 변수를 지정할 수 있습니다.

예제

모두 축소

요소별 함수를 정의하고 테이블의 변수에 적용하여 모든 요소를 제곱합니다.

숫자형 변수가 포함된 테이블을 정의합니다.

A = table([0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A=5×2 table
    Var1     Var2 
    _____    _____

     0.71     0.23
    -2.05     0.12
    -0.35    -0.18
    -0.82     0.23
     1.57     0.41

익명 함수를 정의하여 입력값의 제곱을 구합니다.

func = @(x) x.^2;

함수를 테이블 A의 모든 변수에 적용합니다.

B = varfun(func,A)
B=5×2 table
    Fun_Var1    Fun_Var2
    ________    ________

     0.5041      0.0529 
     4.2025      0.0144 
     0.1225      0.0324 
     0.6724      0.0529 
     2.4649      0.1681 

B의 변수에는 함수에 기반한 이름과 A의 변수 이름이 사용됩니다.

5x2 테이블에서 각 변수의 평균을 계산합니다.

숫자형 변수가 포함된 테이블을 정의합니다.

A = table([0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A=5×2 table
    Var1     Var2 
    _____    _____

     0.71     0.23
    -2.05     0.12
    -0.35    -0.18
    -0.82     0.23
     1.57     0.41

익명 함수를 정의하여 입력값의 평균을 구합니다.

func = @mean;

func에서 기존 MATLAB® 함수를 사용하여 연산을 정의합니다.

함수를 테이블 A의 모든 변수에 적용합니다.

B = varfun(func,A)
B=1×2 table
    mean_Var1    mean_Var2
    _________    _________

     -0.188        0.162  

B는 각 변수의 평균 값을 포함하는 테이블입니다. 테이블 대신 숫자형 벡터를 반환하려면 B = varfun(func,A,'OutputFormat','uniform')을 사용할 수 있습니다.

테이블 A에서 변수의 그룹별 평균을 계산하고 테이블 B에 행으로 반환합니다.

그룹을 정의하는 변수가 한 개 들어 있는 테이블을 만듭니다.

A = table({'test2';'test1';'test2';'test3';'test1'},...
    [0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
A=5×3 table
     Var1      Var2     Var3 
    _______    _____    _____

    'test2'     0.71     0.23
    'test1'    -2.05     0.12
    'test2'    -0.35    -0.18
    'test3'    -0.82     0.23
    'test1'     1.57     0.41

익명 함수를 정의하여 입력값의 평균을 구합니다.

func = @mean;

func에서 기존 MATLAB® 함수를 사용하여 연산을 정의합니다.

Var1에서 정의한 각 데이터 그룹에 함수를 적용합니다.

B = varfun(func,A,'GroupingVariables','Var1')
B=3×4 table
     Var1      GroupCount    mean_Var2    mean_Var3
    _______    __________    _________    _________

    'test1'        2           -0.24        0.265  
    'test2'        2            0.18        0.025  
    'test3'        1           -0.82         0.23  

B에는 해당 그룹에서 테이블 A의 항목 수를 나타내는 GroupCount라는 변수가 포함됩니다.

샘플 데이터가 포함된 타임테이블을 만듭니다. 타임테이블의 행 시간값이 그룹도 정의합니다.

dt = datetime(2016,1,1)+days([0 1 1 2 3 3])';
A = timetable(dt,[0.71;-2.05;-0.35;-0.82;1.57;0.09],...
              [0.23;0.12;-0.18;0.23;0.41;0.02],...
              'VariableNames',{'x' 'y'})
A=6×2 timetable
             dt               x        y  
    ____________________    _____    _____

    01-Jan-2016 00:00:00     0.71     0.23
    02-Jan-2016 00:00:00    -2.05     0.12
    02-Jan-2016 00:00:00    -0.35    -0.18
    03-Jan-2016 00:00:00    -0.82     0.23
    04-Jan-2016 00:00:00     1.57     0.41
    04-Jan-2016 00:00:00     0.09     0.02

타임테이블에서 변수의 그룹별 평균을 계산합니다. A가 타임테이블이므로 varfunB를 타임테이블로 반환합니다. 행 시간값을 그룹화 변수로 지정하는 경우, 어떤 변수도 또 다른 그룹화 변수로 지정할 수 없습니다.

B = varfun(@mean,A,'GroupingVariables','dt')
B=4×3 timetable
             dt             GroupCount    mean_x    mean_y
    ____________________    __________    ______    ______

    01-Jan-2016 00:00:00        1          0.71      0.23 
    02-Jan-2016 00:00:00        2          -1.2     -0.03 
    03-Jan-2016 00:00:00        1         -0.82      0.23 
    04-Jan-2016 00:00:00        2          0.83     0.215 

입력 인수

모두 축소

함수로, 함수 핸들로 지정됩니다. 함수를 파일에 정의하거나 익명 함수로 정의할 수 있습니다. func가 둘 이상의 함수 파일에 대응하는 경우(즉, func가 일련의 오버로드된 함수를 나타내는 경우) MATLAB®은 입력 인수의 클래스에 따라 어떤 함수를 호출할지를 결정합니다.

함수 func가 호출될 때마다 한 개의 입력 인수를 가져오고 서로 다른 개수의 행을 포함하는 배열을 반환하는 경우에는 'OutputFormat','cell' 이름-값 쌍의 인수를 사용하십시오. 그렇지 않으면, func는 같은 개수의 행을 포함하는 배열을 반환해야 합니다.

예: func = @(x) x.^2;은 입력값의 각 요소의 제곱을 계산합니다.

입력 테이블로, table형이나 timetable형으로 지정됩니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'InputVariables',2에서는 A의 두 번째 변수만 func에 대한 입력값으로 사용합니다.

func에 전달할 A의 변수를 선택하기 위한 지정자로, 'InputVariables'와 함께 양의 정수, 양의 정수의 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열, 논리형 벡터 또는 함수 핸들이 쉼표로 구분되어 지정됩니다.

'InputVariables'를 함수 핸들로 지정하는 경우, 이것은 논리형 스칼라를 반환해야 하고, varfunA에서 함수가 1(true)을 반환하는 변수만 전달합니다.

행 그룹을 정의하는 하나 이상의 A의 변수로, 'GroupingVariables'와 함께 양의 정수, 양의 정수의 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다.

'GroupingVariables'의 값은 그룹화 변수의 데이터형이 아니라 어떤 테이블 변수가 그룹화 변수인지를 지정합니다. 그룹화 변수는 숫자형이거나 categorical, calendarDuration, datetime, duration, logical 또는 string 데이터형일 수 있습니다.

A에서 그룹화 변수 값이 같은 행은 같은 그룹에 속합니다. varfunfunc를 각각의 전체 변수가 아니라, A의 각 변수 내 각 행 그룹에 적용합니다.

그룹화 변수가 NaN 또는 누락된 값(예: NaT, 정의되지 않은 categorical형 값 또는 누락된 string형)을 포함하는 경우, 대응하는 행은 어떤 그룹에도 속하지 않고 출력값에서 제외됩니다.

행 레이블은 그룹화 변수일 수 있습니다. 사용자는 행 레이블만을 기준으로, 또는 하나 이상의 A의 변수를 기준으로, 또는 행 레이블과 변수를 함께 기준으로 하여 그룹화할 수 있습니다.

  • A가 테이블인 경우 레이블은 행 이름입니다.

  • A가 타임테이블인 경우 레이블은 행 시간값입니다.

'OutputFormat','uniform' 또는 'OutputFormat','cell'을 지정하면 출력값 B에 각 그룹마다 하나씩 행이 생성됩니다. 'OutputFormat','table' 또는 'OutputFormat','timetable'을 지정하면 func의 출력값의 크기에 따라 각 그룹에 대응하는 B의 행 개수가 결정됩니다.

B의 형식으로, 'OutputFormat'과 함께 값 'uniform', 'table', 'timetable', 'cell' 중 하나가 쉼표로 구분되어 지정됩니다.

'table'

varfunA의 각 변수(또는 'InputVariables'로 지정한 각 변수)에 대한 변수를 하나씩 포함한 테이블을 반환합니다. 그룹화 계산의 경우, B에는 그룹화 변수도 포함됩니다.

'table'을 사용하여 A에서 다양한 크기의 값이나 다양한 변수의 데이터형을 반환하는 함수를 사용할 수 있습니다. 하지만 그룹화되지 않은 계산의 경우, func는 호출될 때마다 행 개수가 같은 배열을 반환해야 합니다. 그룹화된 계산의 경우에는 지정된 그룹에 대해 func를 호출할 때마다 이 함수는 행 개수가 같은 값을 반환해야 합니다.

A가 테이블인 경우 이것은 디폴트 출력 형식입니다.

'timetable'

varfunA의 각 변수(또는 'InputVariables'로 지정한 각 변수)에 대한 변수를 하나씩 포함한 타임테이블을 반환합니다. 그룹화 계산의 경우, B에는 그룹화 변수도 포함됩니다.

varfunA의 행 시간값에서 B의 행 시간값을 만듭니다. B에 할당된 행 시간값이 func를 사용하여 수행된 계산 맥락에서 타당하지 않는 경우, 출력 형식을 'OutputFormat','table'로 지정하십시오.

A가 타임테이블인 경우 이것은 디폴트 출력 형식입니다.

'uniform'

varfun은 값들을 하나의 벡터에 결합합니다. func는 호출될 때마다 같은 데이터형의 스칼라를 반환해야 합니다.

'cell'

varfunB를 셀형 배열로 반환합니다. 'cell'을 사용하여 다른 크기나 데이터형의 값을 반환하는 함수를 사용할 수 있습니다.

func가 실패할 경우 호출할 함수로, 'ErrorHandler'와 함께 함수 핸들이 쉼표로 구분되어 지정됩니다. 오류를 다시 발생시키거나 함수 func에 대해 유효한 출력값을 반환하도록 이 함수를 정의합니다.

MATLAB에서는 다음과 같이 2개의 입력 인수로 지정된 오류 처리 함수를 호출합니다.

  • 다음 필드를 포함한 구조체:

    identifier

    오류 ID입니다.

    message

    오류 메시지 텍스트입니다.

    index

    오류가 발생한 변수의 인덱스입니다.

    name

    오류가 발생한 변수의 이름입니다.

  • 오류 발생 시 함수 func의 입력 인수 세트

예를 들면,

function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message)
A = NaN; B = NaN;

출력 인수

모두 축소

출력 테이블로, 테이블 또는 타임테이블로 반환됩니다. B에는 설명, 변수 단위, 변수 이름, 행 이름 등과 같은 메타데이터가 저장될 수 있습니다. 자세한 내용은 table 또는 timetable 속성 설명을 참조하십시오.

확장 기능

R2013b에 개발됨