이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
varfun
함수를 테이블 또는 타임테이블 변수에 적용
설명
는 B
= varfun(func
,A
)func
함수를 개별적으로 테이블 또는 타임테이블 A
의 각 변수에 적용하고 그 결과를 테이블 또는 타임테이블 B
에 반환합니다.
함수 func
는 호출될 때마다 입력 인수를 하나 가져와서 같은 개수의 행을 포함한 배열을 반환해야 합니다. 출력 인수의 i
번째 변수 B{:,i}
는 func(A{:,i})
와 같습니다.
A
가 타임테이블이고 func
함수가 행 그룹에서 데이터를 집계하는 경우, varfun
은 A
의 각 행 그룹의 첫 번째 행 시간값을 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
의 변수 이름이 사용됩니다.
벡터에서 스칼라를 반환하는 함수 적용하기
5×2 테이블에서 각 변수의 평균을 계산합니다.
숫자형 변수가 포함된 테이블을 정의합니다.
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 0.71 0.23
02-Jan-2016 -2.05 0.12
02-Jan-2016 -0.35 -0.18
03-Jan-2016 -0.82 0.23
04-Jan-2016 1.57 0.41
04-Jan-2016 0.09 0.02
타임테이블에서 변수의 그룹별 평균을 계산합니다. A
가 타임테이블이므로 varfun
은 B
를 타임테이블로 반환합니다. 행 시간값을 그룹화 변수로 지정하는 경우, 어떤 변수도 또 다른 그룹화 변수로 지정할 수 없습니다.
B = varfun(@mean,A,'GroupingVariables','dt')
B=4×3 timetable
dt GroupCount mean_x mean_y
___________ __________ ______ ______
01-Jan-2016 1 0.71 0.23
02-Jan-2016 2 -1.2 -0.03
03-Jan-2016 1 -0.82 0.23
04-Jan-2016 2 0.83 0.215
입력 인수
func
— 함수
함수 핸들
함수로, 함수 핸들로 지정됩니다. 함수를 파일에 정의하거나 익명 함수로 정의할 수 있습니다. func
가 둘 이상의 함수 파일에 대응하는 경우(즉, func
가 일련의 오버로드된 함수를 나타내는 경우) MATLAB®은 입력 인수의 클래스에 따라 어떤 함수를 호출할지를 결정합니다.
함수 func
가 호출될 때마다 한 개의 입력 인수를 가져오고 서로 다른 개수의 행을 포함하는 배열을 반환하는 경우에는 'OutputFormat','cell'
이름-값 쌍의 인수를 사용하십시오. 그렇지 않으면, func
는 같은 개수의 행을 포함하는 배열을 반환해야 합니다.
예: func = @(x) x.^2;
은 입력값의 각 요소의 제곱을 계산합니다.
A
— 입력 테이블
테이블 | 타임테이블
입력 테이블로, table형이나 timetable형으로 지정됩니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: 'InputVariables',2
에서는 A
의 두 번째 변수만 func
에 대한 입력값으로 사용합니다.
InputVariables
— func
에 전달할 A
의 변수를 선택하기 위한 지정자
양의 정수 | 양의 정수로 구성된 벡터 | string형 배열 | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열 | pattern
스칼라 | 논리형 벡터 | 함수 핸들
func
에 전달할 A
의 변수를 선택하기 위한 지정자로, 'InputVariables'
와 함께 양의 정수, string형 배열, 양의 정수로 구성된 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, pattern
스칼라, 논리형 벡터 또는 함수 핸들이 쉼표로 구분되어 지정됩니다.
'InputVariables'
를 함수 핸들로 지정하는 경우, 이것은 논리형 스칼라를 반환해야 하고, varfun
은 A
에서 함수가 1
(true
)을 반환하는 변수만 전달합니다.
GroupingVariables
— 행 그룹을 정의하는 하나 이상의 A
의 변수
양의 정수 | 양의 정수로 구성된 벡터 | string형 배열 | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열 | pattern
스칼라 | 논리형 벡터
행 그룹을 정의하는 하나 이상의 A
의 변수로, 'GroupingVariables'
와 함께 양의 정수, string형 배열, 양의 정수로 구성된 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, pattern
스칼라 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다.
'GroupingVariables'
의 값은 그룹화 변수의 데이터형이 아니라 어떤 테이블 변수가 그룹화 변수인지를 지정합니다. 그룹화 변수는 숫자형이거나 categorical
, calendarDuration
, datetime
, duration
, logical
또는 string
데이터형일 수 있습니다.
A
에서 그룹화 변수 값이 같은 행은 같은 그룹에 속합니다. varfun
은 func
를 각각의 전체 변수가 아니라, A
의 각 변수 내 각 행 그룹에 적용합니다.
그룹화 변수가 NaN
또는 누락값(예: NaT
, 정의되지 않은 categorical형 값 또는 누락값인 string형)을 포함하는 경우, 대응하는 행은 어떤 그룹에도 속하지 않고 출력값에서 제외됩니다.
행 레이블은 그룹화 변수일 수 있습니다. 사용자는 행 레이블만을 기준으로, 또는 하나 이상의 A
의 변수를 기준으로, 또는 행 레이블과 변수를 함께 기준으로 하여 그룹화할 수 있습니다.
A
가 테이블인 경우 레이블은 행 이름입니다.A
가 타임테이블인 경우 레이블은 행 시간값입니다.
출력값 B
는 입력값 A
의 각 행 그룹에 대한 하나의 행을 포함합니다.
'OutputFormat','uniform'
또는'OutputFormat','cell'
을 지정하는 경우 출력값은func
가 적용된 입력 테이블 변수에 대응하는 열을 가집니다.'OutputFormat','table'
또는'OutputFormat','timetable'
을 지정하는 경우 출력값은 다음을 포함합니다.func
가 적용된 입력 테이블 변수에 대응하는 변수.그룹화 변수에 대응하는 변수.
값이 각 그룹에 있는 입력값
A
의 행 개수인 새로운 변수GroupCount
.
OutputFormat
— B
의 형식
'table'
(디폴트 값) | 'timetable'
| 'uniform'
| 'cell'
B
의 형식으로, 'OutputFormat'
과 함께 값 'uniform'
, 'table'
, 'timetable'
, 'cell'
중 하나가 쉼표로 구분되어 지정됩니다.
|
|
|
|
|
|
|
|
ErrorHandler
— func
가 실패할 경우 호출할 함수
함수 핸들
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;
출력 인수
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
이 함수는 tall형 배열을 지원하지만 다음과 같은 제한 사항이 있습니다.
func
입력값은 항상 tall형 배열을 반환합니다.지원되는 이름-값 쌍은 다음과 같습니다.
'InputVariables'
— 함수 핸들 또는 패턴 표현식으로 지정할 수 없습니다.'GroupingVariables'
— 값은 패턴 표현식이 될 수 없습니다.'OutputFormat'
— 값은'uniform'
,'table'
,'timetable'
,'cell'
중 하나만 될 수 있습니다.
입력 배열이 tall형 타임테이블이고
'OutputFormat'
이'timetable'
인 경우 지정한 함수는 첫 번째 차원의 크기가 입력값과 같은 배열을 반환해야 합니다. 입력 함수가mean
과 같은 감소 함수일 때는'OutputFormat'
을'table'
로 지정하십시오.
자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
함수 핸들 입력값
func
는 상수여야 합니다.함수 핸들은
varfun
함수 자체에 대한 입력값은 될 수 있지만, 진입점 함수에 대한 입력값은 될 수 없습니다. 코드 생성 용도의 코드 내에func
를 지정하십시오. 자세한 내용은 Function Handle Limitations for Code Generation (MATLAB Coder) 항목을 참조하십시오.모든 이름-값 인수의 값은 상수여야 합니다.
'InputVariables'
와'GroupingVariables'
이름-값 인수의 값은 패턴 표현식을 지원하지 않습니다.코드 생성 시
'ErrorHandler'
이름-값 인수는 지원되지 않습니다.가변 크기 입력 인수는 지원되지 않습니다.
생성된 코드에서 그룹화 변수는 중복된 값을 가질 수 없습니다.
'GroupingVariables'
이름-값 인수를 지정했고'InputVariables'
로 지정된 각 변수에 대해 함수가 서로 다른 데이터형을 반환하는 경우에는'OutputFormat'
의 값을'cell'
로 지정할 수 없습니다.입력값이 timetable형이고
'GroupingVariables'
를 지정하는 경우 출력값은 항상 불규칙적인 타임테이블입니다.그룹을 지정했고 컴파일 시점에는 그룹의 수를 알지 못하며 그룹 수가 0이면 생성된 코드에서 출력값의 빈 double형 변수는 크기가 1×0일 수 있습니다. 이러한 변수는 MATLAB에서 크기가 0×0입니다.
버전 내역
R2013b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)