이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
table
다양한 유형을 포함할 수 있는 명명된 변수로 구성된 table형 배열
설명
table
형 배열은 텍스트 파일의 열이나 스프레드 시트의 열과 같은, 열 방향의 데이터 또는 테이블 형식의 데이터를 저장합니다. 테이블은 하나의 변수에 한 무리의 열 방향 데이터를 저장합니다. 테이블 변수는 모든 변수의 행 개수가 동일한 경우에 한해 서로 다른 데이터형과 크기를 가질 수 있습니다. 테이블 변수는 구조체 필드와 마찬가지로 이름을 가질 수 있습니다. summary
함수를 사용하여 테이블에 대한 정보를 가져옵니다.
테이블 형식 데이터에 타임스탬프가 포함된 경우에는 timetable
을 사용하여 데이터를 저장하고 분석해 보십시오.
테이블의 요소를 참조하려면 소괄호 ()
를 사용하여 하위 테이블을 반환하거나 중괄호 {}
를 사용하여 내용을 추출하십시오. 이름을 사용하여 변수와 행에 액세스할 수 있습니다. 번호와 이름을 사용하는 인덱싱에 대한 자세한 내용은 테이블의 데이터에 액세스하기 항목을 참조하십시오.
생성
Import Tool
또는 readtable
함수를 사용하여 파일의 데이터를 테이블로 읽어올 수 있습니다. 또는 아래 설명된 table
함수를 사용하여 기존 작업 공간 변수로부터 테이블을 만듭니다.
변수에 공백을 허용하고 해당 값을 나중에 채우는 테이블을 만들 수도 있습니다. 변수에 사전할당된 공백이 있는 테이블을 만들려면 아래에 설명된 대로 'Size'
를 첫 번째 입력 인수로 지정하여 table
함수를 사용하십시오.
구문
설명
T = table(
은 입력 변수 var1,...,varN
)var1,...,varN
에서 테이블을 만듭니다. 변수는 크기와 데이터형이 서로 다를 수 있지만, 모든 변수는 행 개수가 동일해야 합니다.
입력값이 작업 공간 변수인 경우, table
은 출력 테이블에서 이름을 변수 이름으로 할당합니다. 그렇지 않으면, table
은 'Var1',...,'Var
형식의 변수 이름을 할당하는데, 여기서 N
'
은 변수의 개수입니다.N
T = table(___,
는 하나 이상의 이름-값 쌍의 인수를 사용하여 입력 인수를 추가로 지정합니다. 예를 들어, Name,Value
)'VariableNames'
이름-값 쌍을 사용하여 변수 이름을 지정할 수 있습니다. 이 구문은 위에 열거된 구문 중 하나의 입력 인수에 사용할 수 있습니다.
T = table
은 빈 0×0 테이블을 만듭니다.
입력 인수
var1,...,varN
— 입력 변수
배열
입력 변수로, 행 개수가 같은 배열로 지정됩니다. 입력 변수는 크기와 데이터형이 서로 다를 수 있습니다.
일반적인 입력 변수는 숫자형 배열, 논리형 배열, 문자형 배열, 구조체형 배열, 또는 셀형 배열입니다. 입력 변수는 배열인 객체일 수도 있습니다. 이러한 배열은 var(index1,...,indexN)
형식의 인덱싱을 지원해야 합니다. 여기서 index1
은 변수 var
의 행에 대응하는 숫자형 벡터 또는 논리형 벡터입니다. 또한, 이 배열은 dim
인수와 함께 vertcat
메서드와 size
메서드를 모두 구현해야 합니다.
예: table([1:4]',ones(4,3,2),eye(4,2))
는 서로 크기가 다른, 4개의 행을 갖는 변수들로 테이블을 만듭니다.
예: table([1:3]',{'one';'two';'three'},categorical({'A';'B';'C'}))
는 서로 데이터형이 다른, 3개의 행을 갖는 변수들로 테이블을 만듭니다.
sz
— 사전할당된 테이블의 크기
요소를 2개 가진 숫자형 벡터
사전할당된 테이블의 크기로, 요소를 2개 가진 숫자형 벡터로 지정됩니다. sz
의 첫 번째 요소는 행 개수를 지정하고, 두 번째 요소는 테이블 변수 개수를 지정합니다.
행 없이 변수만 생성하려면 sz
의 첫 번째 요소로 0
을 지정하십시오.
예: T = table('Size',[50 3],'VariableTypes',{'string','double','datetime'})
은 string형 배열, double형 배열, datetime형 배열이 포함된 테이블에 행 50개를 사전할당합니다.
예: T = table('Size',[0 4],'VariableTypes',varTypes)
는 행 0개와 변수 4개를 지정합니다.
varTypes
— 사전할당된 변수의 데이터형
문자형 벡터로 구성된 셀형 배열 | string형 배열
사전할당된 변수의 데이터형으로, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. varTypes
로 지정된 데이터형 개수는 sz
의 두 번째 요소로 지정된 변수 개수와 같아야 합니다.
varTypes
에는 다음 표에 표시된 이름을 비롯해 모든 데이터형의 이름이 포함될 수 있습니다.
데이터형 이름 | 각 요소의 초기값 |
---|---|
| 배정밀도 또는 단정밀도 |
| 배정밀도 또는 단정밀도 |
| 부호 있는 8비트, 16비트, 32비트 또는 64비트 정수 |
| 부호 없는 8비트, 16비트, 32비트 또는 64비트 정수 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 필드 없는 스칼라 구조체 |
| 변수 없는 테이블 |
| 변수는 없고 행 시간값은 |
그 밖의 다른 데이터형의 경우, 초기값은 해당 데이터형 또는 클래스가 배열의 할당되지 않은 요소를 "채우는" 데 사용하는 값이 됩니다.
'char'
을 데이터형으로 지정하면 table
함수는 해당 변수를 문자형 배열이 아니라 문자형 벡터로 구성된 셀형 배열로 사전할당합니다. 따라서 문자형 배열인 테이블 또는 타임테이블 변수는 생성하지 않는 것이 가장 좋습니다. 테이블이나 타임테이블에서 텍스트 데이터를 사용하는 경우 string형 배열이나 categorical형 배열을 사용해 보십시오.
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: T = table(Age,Height,Weight,'RowNames',LastName)
은 변수 LastName
에서 지정한 행 이름을 가진 테이블을 만듭니다.
VariableNames
— 변수 이름
문자형 벡터로 구성된 셀형 배열 | string형 배열
변수 이름으로, 비어 있지 않은 고유한 요소를 갖는 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다.
배열의 이름 개수는 테이블 변수의 개수와 같아야 합니다.
table
함수는 또한 테이블의VariableNames
속성에 변수 이름을 저장합니다.변수 이름에는 공백과 비ASCII 문자를 포함하여 모든 Unicode® 문자를 사용할 수 있습니다.
예: T = table(lat,lon,'VariableNames',["Latitude","Longitude"])
는 입력 배열 lat
와 lon
에서 테이블을 생성하고 해당 테이블 변수의 이름을 Latitude
와 Longitude
로 지정합니다.
RowNames
— 행 이름
문자형 벡터로 구성된 셀형 배열 | string형 배열
행 이름으로, 비어 있지 않은 고유한 요소를 갖는 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다.
배열의 이름 개수는 행 개수와 같아야 합니다.
table
함수는 또한 테이블의RowNames
속성에 행 이름을 저장합니다.공백이나 비ASCII 문자를 포함하여 모든 Unicode 문자를 행 이름에 사용할 수 있습니다.
table
함수는 행 이름에서 선행 또는 후행 공백 문자를 제거합니다.
예: T = table(Age,Height,Weight,'RowNames',LastName)
은 변수 LastName
에서 지정한 행 이름을 가진 테이블을 만듭니다.
DimensionNames
— 차원 이름
문자형 벡터로 구성된, 요소를 2개 가진 셀형 배열 | 요소를 2개 가진 string형 배열
R2021a 이상
차원 이름으로, 문자형 벡터 요소를 2개 가진 셀형 배열 또는 비어 있지 않고 고유한 요소를 2개 가진 string형 배열로 지정됩니다.
table
함수는 또한 테이블의DimensionNames
속성에 차원 이름을 저장합니다.차원 이름에는 공백 및 비ASCII 문자를 포함하여 모든 Unicode 문자를 사용할 수 있습니다.
R2021a 이전 릴리스에서는 차원 이름을 지정하려면 DimensionNames
속성을 설정하는 방법밖에 없었습니다.
예: T = table(Age,Height,Weight,'RowNames',LastName,'DimensionNames',["PatientName","PatientData"])
는 첫 번째 차원의 이름은 "PatientName"
이고 두 번째 차원의 이름은 "PatientData"
인 테이블을 만듭니다.
속성
테이블 메타데이터 속성에 액세스
테이블에는 테이블과 테이블 변수를 설명하는 메타데이터 속성이 포함됩니다. 구문
을 사용하여 이러한 속성에 액세스합니다. 여기서 tableName
.Properties.PropertyName
은 속성 이름입니다. 예를 들어, 구문 PropertyName
T.Properties.VariableNames
를 사용하여 테이블 T
에 포함된 변수 이름에 액세스할 수 있습니다.
구문
를 사용하여 모든 메타데이터 속성의 요약을 반환할 수 있습니다.tableName
.Properties
점 구문을 사용하여 직접 테이블 데이터에 액세스할 수 있기 때문에 테이블에서는 Properties
속성을 통해 메타데이터에 액세스할 수 있습니다. 예를 들어, 테이블 T
에 Var1
이라는 변수가 있으면 구문 T.Var1
을 사용하여 변수의 값에 액세스할 수 있습니다.
테이블 메타데이터
DimensionNames
— 차원 이름
{'Row','Variables'}
(디폴트 값) | 문자형 벡터로 구성된, 요소를 2개 가진 셀형 배열 | 요소를 2개 가진 string형 배열
차원 이름으로, 문자형 벡터 요소를 2개 가진 셀형 배열 또는 요소를 2개 가진 string형 배열로 지정됩니다.
차원 이름에는 공백 및 비ASCII 문자를 포함하여 모든 Unicode 문자를 사용할 수 있습니다.
string형 배열을 사용하여 이 속성을 지정하면 이 속성은 문자형 벡터로 구성된 셀형 배열로 변환되어 저장됩니다.
2개의 차원 이름을 사용하여 테이블 데이터에 액세스할 수 있습니다.
테이블에 행 이름이 있는 경우, 점 구문과 첫 번째 차원 이름을 사용하면 행 이름을 벡터로서 액세스할 수 있습니다.
점 구문과 두 번째 차원 이름을 사용하면
{:,:}
구문을 사용하여 테이블의 요소를 참조한 것처럼 모든 변수의 데이터가 하나의 배열로 결합됩니다.
예제
테이블을 생성하고 테이블의 차원 이름을 표시합니다. 점 구문과 함께 차원 이름을 사용하여 행 이름과 데이터에 액세스할 수 있습니다.
load patients T = table(Age,Height,Weight,Systolic,Diastolic, ... 'RowNames',LastName); T.Properties.DimensionNames
ans = 1x2 cell
{'Row'} {'Variables'}
첫 번째 차원 이름을 사용하여 행 이름에 액세스합니다. 처음 5개 이름을 표시합니다.
T.Row(1:5)
ans = 5x1 cell
{'Smith' }
{'Johnson' }
{'Williams'}
{'Jones' }
{'Brown' }
두 번째 차원 이름을 사용하여 데이터에 액세스합니다. 이 구문은 T{:,:}
와 동일합니다.
T.Variables
ans = 100×5
38 71 176 124 93
43 69 163 109 77
38 64 131 125 83
40 67 133 117 75
49 64 119 122 80
46 68 142 121 70
33 64 142 130 88
40 68 180 115 82
28 68 183 115 78
31 66 132 118 86
⋮
Properties.DimensionNames
속성을 사용하여 테이블의 차원 이름을 수정합니다. 차원 이름을 수정하면 구문 T.Patient
와 T.Data
를 사용하여 각각 행 이름과 데이터에 액세스할 수 있습니다.
T.Properties.DimensionNames = ["Patient","Data"]; T.Properties
ans = TableProperties with properties: Description: '' UserData: [] DimensionNames: {'Patient' 'Data'} VariableNames: {'Age' 'Height' 'Weight' 'Systolic' 'Diastolic'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowNames: {100x1 cell} CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
RowNames
— 행 이름
{}
(디폴트 값) | 문자형 벡터로 구성된 셀형 배열 | string형 배열
행 이름으로, 비어 있지 않은 고유한 요소를 갖는 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. RowNames
가 비어 있지 않은 경우 행 이름의 개수는 테이블의 행 개수와 같아야 합니다.
공백이나 비ASCII 문자를 포함하여 모든 Unicode 문자를 행 이름에 사용할 수 있습니다.
선행 또는 후행 공백 문자가 있는 행 이름을 지정하면 MATLAB®이 행 이름에서 공백 문자를 제거합니다.
행 이름은 테이블을 볼 때 확인할 수 있습니다. 또한, 소괄호 또는 중괄호 안에 행 이름을 사용하여 테이블 데이터에 액세스할 수도 있습니다.
행 이름에 액세스할 수 있는 또 다른 방법은 점 구문과 테이블의 첫 번째 차원 이름을 사용하는 것입니다.
string형 배열을 사용하여 이 속성을 지정하면 이 속성은 문자형 벡터로 구성된 셀형 배열로 변환되어 저장됩니다.
예제
테이블을 만듭니다. 그런 다음, 행 이름을 추가하고 해당 이름을 사용하여 행에 액세스합니다.
load patients
T = table(Age,Height,Weight,Smoker,Systolic,Diastolic,SelfAssessedHealthStatus);
T.SelfAssessedHealthStatus = string(SelfAssessedHealthStatus);
Properties.RowNames
속성을 사용하여 행 이름을 추가합니다. 기본적으로 테이블에는 행 이름이 없지만 언제든지 행 이름을 추가할 수 있습니다.
T.Properties.RowNames = string(LastName); head(T,5)
Age Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus ___ ______ ______ ______ ________ _________ ________________________ Smith 38 71 176 true 124 93 "Excellent" Johnson 43 69 163 false 109 77 "Fair" Williams 38 64 131 false 125 83 "Good" Jones 40 67 133 false 117 75 "Fair" Brown 49 64 119 false 122 80 "Good"
행 이름에 액세스할 수 있는 또 다른 방법은 점 구문과 테이블의 첫 번째 차원 이름을 사용하는 것입니다. 처음 5개 행 이름을 표시합니다.
T.Properties.DimensionNames
ans = 1x2 cell
{'Row'} {'Variables'}
T.Row(1:5)
ans = 5x1 cell
{'Smith' }
{'Johnson' }
{'Williams'}
{'Jones' }
{'Brown' }
행 이름을 사용하여 테이블의 요소를 참조합니다.
T(["Smith","Brown"],:)
ans=2×7 table
Age Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus
___ ______ ______ ______ ________ _________ ________________________
Smith 38 71 176 true 124 93 "Excellent"
Brown 49 64 119 false 122 80 "Good"
Description
— 테이블 설명
''
(디폴트 값) | 문자형 벡터 | string형 스칼라
테이블 설명으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 이 설명은 summary
함수를 사용할 때 확인할 수 있습니다.
string형 스칼라를 사용하여 이 속성을 지정하면 이 속성은 문자형 벡터로 변환되어 저장됩니다.
예제
테이블을 만듭니다. 테이블 설명을 수정합니다. 결과의 요약을 표시합니다.
load patients T = table(LastName,Age,Height,Weight); T.LastName = string(T.LastName); T.Properties.Description = "Simulated patient data"; summary(T)
Description: Simulated patient data Variables: LastName: 100x1 string Age: 100x1 double Values: Min 25 Median 39 Max 50 Height: 100x1 double Values: Min 60 Median 67 Max 72 Weight: 100x1 double Values: Min 111 Median 142.5 Max 202
UserData
— 추가 테이블 정보
[]
(디폴트 값) | 배열
추가 테이블 정보로, 배열로 지정됩니다. 이 속성을 사용하면 테이블에 어떠한 유형의 데이터도 추가할 수 있습니다.
예제
테이블을 만듭니다. 익명 함수를 테이블과 연관된 사용자 데이터로서 추가합니다.
load patients
T = table(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic);
formula = @(x) x.^2;
T.Properties.UserData = formula;
T.Properties
ans = TableProperties with properties: Description: '' UserData: @(x)x.^2 DimensionNames: {'Row' 'Variables'} VariableNames: {'LastName' 'Age' 'Height' 'Weight' 'Smoker' 'Systolic' 'Diastolic'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowNames: {} CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
변수 메타데이터
VariableNames
— 변수 이름
문자형 벡터로 구성된 셀형 배열 | string형 배열
변수 이름으로, 비어 있지 않은 고유한 요소를 갖는 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. 이름 개수는 변수의 개수와 같아야 합니다.
변수 이름에는 공백과 비ASCII 문자를 포함하여 모든 Unicode 문자를 사용할 수 있습니다.
변수 이름은 테이블을 볼 때, 그리고
summary
함수를 사용할 때 확인할 수 있습니다. 또한, 소괄호 또는 중괄호 안에 변수 이름을 사용하거나 점 인덱싱과 함께 변수 이름을 사용하여 테이블 데이터에 액세스할 수도 있습니다.string형 배열을 사용하여 이 속성을 지정하면 이 속성은 문자형 벡터로 구성된 셀형 배열로 변환되어 저장됩니다.
예제
디폴트 변수 이름을 가진 테이블을 만듭니다. 그런 다음, Properties.VariableNames
속성을 사용하여 이름을 수정합니다.
T = table(["Smith";"Nguyen";"Williams";"Fernandez";"Brown"],[38;43;38;40;49], ... [71;69;64;67;64],[176;163;131;133;119])
T=5×4 table
Var1 Var2 Var3 Var4
___________ ____ ____ ____
"Smith" 38 71 176
"Nguyen" 43 69 163
"Williams" 38 64 131
"Fernandez" 40 67 133
"Brown" 49 64 119
T.Properties.VariableNames = ["LastName","Age","Height","Weight"]
T=5×4 table
LastName Age Height Weight
___________ ___ ______ ______
"Smith" 38 71 176
"Nguyen" 43 69 163
"Williams" 38 64 131
"Fernandez" 40 67 133
"Brown" 49 64 119
변수를 표시하고 수정하는 기본적인 방법은 점 구문을 사용하여 이름으로 변수에 액세스하는 것입니다.
T.Age
ans = 5×1
38
43
38
40
49
T.Age(1) = 53
T=5×4 table
LastName Age Height Weight
___________ ___ ______ ______
"Smith" 53 71 176
"Nguyen" 43 69 163
"Williams" 38 64 131
"Fernandez" 40 67 133
"Brown" 49 64 119
VariableDescriptions
— 변수 설명
{}
(디폴트 값) | 문자형 벡터로 구성된 셀형 배열 | string형 배열
변수 설명으로, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. 이 속성은 빈 셀형 배열(디폴트 값)일 수 있습니다. 배열이 비어 있지 않은 경우, 여기에는 변수 개수만큼의 요소가 포함되어야 합니다. 설명이 없는 변수에 대해 개별적으로 빈 문자형 벡터 또는 빈 string형을 지정할 수 있습니다.
변수 설명은
summary
함수를 사용할 때 확인할 수 있습니다.string형 배열을 사용하여 이 속성을 지정하면 이 속성은 문자형 벡터로 구성된 셀형 배열로 변환되어 저장됩니다.
예제
테이블을 만듭니다. 변수 설명을 수정합니다. 결과의 요약을 표시합니다.
load patients T = table(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic); T.LastName = string(T.LastName); T.Properties.VariableDescriptions = ["","","","", ... "Has the patient ever been a smoker", ... "Systolic Pressure","Diastolic Pressure"]; summary(T)
Variables: LastName: 100x1 string Age: 100x1 double Values: Min 25 Median 39 Max 50 Height: 100x1 double Values: Min 60 Median 67 Max 72 Weight: 100x1 double Values: Min 111 Median 142.5 Max 202 Smoker: 100x1 logical Properties: Description: Has the patient ever been a smoker Values: True 34 False 66 Systolic: 100x1 double Properties: Description: Systolic Pressure Values: Min 109 Median 122 Max 138 Diastolic: 100x1 double Properties: Description: Diastolic Pressure Values: Min 68 Median 81.5 Max 99
VariableUnits
— 변수 단위
{}
(디폴트 값) | 문자형 벡터로 구성된 셀형 배열 | string형 배열
변수 단위로, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다. 이 속성은 빈 셀형 배열(디폴트 값)일 수 있습니다. 배열이 비어 있지 않은 경우, 여기에는 변수 개수만큼의 요소가 포함되어야 합니다. 단위가 없는 변수에 대해 개별적으로 빈 문자형 벡터 또는 빈 string형을 지정할 수 있습니다.
변수 단위는
summary
함수를 사용할 때 확인할 수 있습니다.string형 배열을 사용하여 이 속성을 지정하면 이 속성은 문자형 벡터로 구성된 셀형 배열로 변환되어 저장됩니다.
예제
테이블을 만듭니다. 변수 단위를 수정합니다. 결과의 요약을 표시합니다.
load patients T = table(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic); T.LastName = string(T.LastName); T.Properties.VariableUnits = ["","Yrs","In","Lbs","","mm Hg","mm Hg"]; summary(T)
Variables: LastName: 100x1 string Age: 100x1 double Properties: Units: Yrs Values: Min 25 Median 39 Max 50 Height: 100x1 double Properties: Units: In Values: Min 60 Median 67 Max 72 Weight: 100x1 double Properties: Units: Lbs Values: Min 111 Median 142.5 Max 202 Smoker: 100x1 logical Values: True 34 False 66 Systolic: 100x1 double Properties: Units: mm Hg Values: Min 109 Median 122 Max 138 Diastolic: 100x1 double Properties: Units: mm Hg Values: Min 68 Median 81.5 Max 99
VariableContinuity
— 연속 변수 또는 이산 변수로서의 상태
[]
(디폴트 값) | 문자형 벡터로 구성된 셀형 배열 | string형 배열
연속 변수 또는 이산 변수로서의 상태로, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정됩니다.
테이블과 타임테이블 모두 이 속성이 있지만, 타임테이블만 이 속성을 사용합니다. 자세한 내용은 timetable
의 VariableContinuity
속성을 참조하십시오.
사용자 지정 메타데이터
CustomProperties
— 테이블과 테이블 변수의 사용자 지정 메타데이터
CustomProperties
객체
테이블과 테이블 변수의 사용자 지정 메타데이터로, CustomProperties
객체로 지정됩니다.
CustomProperties
객체는 테이블에 추가할 수 있는 사용자 지정 메타데이터의 컨테이너입니다. 기본적으로 CustomProperties
는 0개 속성을 가집니다. CustomProperties
에 추가하는 각 속성은 테이블 메타데이터 또는 변수 메타데이터를 포함할 수 있습니다. 속성이 변수 메타데이터를 포함하는 경우, 그 값은 배열이 되어야 하고 배열의 요소 개수는 테이블 변수의 개수와 같아야 합니다.
참고: 사용자 지정 메타데이터에 대한 속성만 addprop
와 rmprop
를 사용하여 추가 또는 제거할 수 있습니다.
객체의 속성은 추가하거나 제거할 수 없습니다.tableName
.Properties
예제
테이블을 만듭니다.
load patients
T = table(LastName,Age,Height,Weight,Smoker,Systolic,Diastolic);
테이블과 테이블 변수에 대한 사용자 지정 메타데이터를 포함할 수 있는 속성을 추가합니다. 이 예제에서 메타데이터는 계측기의 이름, 변수를 플로팅할지 여부를 나타내는 true
와 false
값, 출력 파일의 이름입니다. 속성을 추가하려면 addprop
함수를 사용하십시오.
T = addprop(T,["Instrument","ToPlot","OutputFile"],["variable","variable","table"]); T.Properties
ans = TableProperties with properties: Description: '' UserData: [] DimensionNames: {'Row' 'Variables'} VariableNames: {'LastName' 'Age' 'Height' 'Weight' 'Smoker' 'Systolic' 'Diastolic'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowNames: {} Custom Properties (access using t.Properties.CustomProperties.<name>): OutputFile: [] Instrument: [] ToPlot: []
점 구문을 사용하여 사용자 지정 메타데이터에 값을 할당합니다. 사용자 지정 메타데이터에 텍스트 값으로 구성된 배열을 할당할 때는 문자형 벡터로 구성된 셀형 배열이 아닌 string형 배열을 사용하는 것이 가장 좋습니다. CustomProperties
에 문자형 벡터로 구성된 셀형 배열인 속성이 있는 경우, 나중에 텍스트가 아닌 값을 셀형 배열의 요소로 할당하지 못하도록 하는 방법은 존재하지 않습니다.
T.Properties.CustomProperties.Instrument = ["","","height rod","scale","","blood pressure cuff","blood pressure cuff"]; T.Properties.CustomProperties.ToPlot = [false false true true false true true]; T.Properties.CustomProperties.OutputFile = 'patientData.csv'; T.Properties
ans = TableProperties with properties: Description: '' UserData: [] DimensionNames: {'Row' 'Variables'} VariableNames: {'LastName' 'Age' 'Height' 'Weight' 'Smoker' 'Systolic' 'Diastolic'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowNames: {} Custom Properties (access using t.Properties.CustomProperties.<name>): OutputFile: 'patientData.csv' Instrument: ["" "" "height rod" "scale" "" "blood pressure cuff" "blood pressure cuff"] ToPlot: [0 0 1 1 0 1 1]
T
에서 OutputFile
속성을 제거합니다.
T = rmprop(T,"OutputFile");
T.Properties
ans = TableProperties with properties: Description: '' UserData: [] DimensionNames: {'Row' 'Variables'} VariableNames: {'LastName' 'Age' 'Height' 'Weight' 'Smoker' 'Systolic' 'Diastolic'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowNames: {} Custom Properties (access using t.Properties.CustomProperties.<name>): Instrument: ["" "" "height rod" "scale" "" "blood pressure cuff" "blood pressure cuff"] ToPlot: [0 0 1 1 0 1 1]
예제
테이블에 관련 데이터 변수 저장하기
테이블에 환자 그룹에 대한 데이터를 저장합니다. 동일한 테이블에서 계산을 수행하고 결과를 저장할 수 있습니다. 또한 테이블에 주석을 지정하여 작업과 테이블 변수를 설명할 수도 있습니다.
먼저, 환자 데이터를 포함하는 작업 공간 변수를 만듭니다. 각 변수는 어떤 데이터형이든 될 수 있지만 행 개수는 동일해야 합니다.
LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'}; Age = [38;43;38;40;49]; Smoker = logical([1;0;1;0;1]); Height = [71;69;64;67;64]; Weight = [176;163;131;133;119]; BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
테이블 T
를 작업 공간 변수에 대한 컨테이너로 만듭니다. table
함수는 작업 공간 변수 이름을 T
의 테이블 변수 이름으로 사용합니다. 테이블 변수는 열을 여러 개 가질 수 있습니다. 예를 들어, T의 BloodPressure
변수는 5×2 배열입니다.
T = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
T=5×6 table
LastName Age Smoker Height Weight BloodPressure
___________ ___ ______ ______ ______ _____________
{'Sanchez'} 38 true 71 176 124 93
{'Johnson'} 43 false 69 163 109 77
{'Li' } 38 true 64 131 125 83
{'Diaz' } 40 false 67 133 117 75
{'Brown' } 49 true 64 119 122 80
점 인덱싱을 사용하여 테이블 변수에 액세스할 수 있습니다. 예를 들어, T.Height
의 값을 사용하여 환자의 평균 키를 계산해 보겠습니다.
meanHeight = mean(T.Height)
meanHeight = 67
BMI(체질량지수)를 계산한 후 새 테이블 변수로 추가합니다. 점 구문을 사용하여 테이블 변수 추가 및 이름 지정 작업을 한 번에 수행할 수 있습니다.
T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2
T=5×7 table
LastName Age Smoker Height Weight BloodPressure BMI
___________ ___ ______ ______ ______ _____________ ______
{'Sanchez'} 38 true 71 176 124 93 24.547
{'Johnson'} 43 false 69 163 109 77 24.071
{'Li' } 38 true 64 131 125 83 22.486
{'Diaz' } 40 false 67 133 117 75 20.831
{'Brown' } 49 true 64 119 122 80 20.426
테이블에 BMI 계산에 대한 설명을 주석으로 지정합니다. T.Properties
를 통해 액세스한 메타데이터를 사용하여 T
와 해당 변수에 주석을 지정할 수 있습니다.
T.Properties.Description = 'Patient data, including body mass index (BMI) calculated using Height and Weight';
T.Properties
ans = TableProperties with properties: Description: 'Patient data, including body mass index (BMI) calculated using Height and Weight' UserData: [] DimensionNames: {'Row' 'Variables'} VariableNames: {'LastName' 'Age' 'Smoker' 'Height' 'Weight' 'BloodPressure' 'BMI'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowNames: {} CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
모든 테이블 데이터를 행렬로서 액세스하기
테이블의 두 번째 차원 이름을 사용하여 테이블의 모든 데이터를 행렬로서 액세스합니다.
환자 그룹에 대한 데이터 중 처음 5개 행이 포함된 테이블을 만듭니다.
Age = [38;43;38;40;49]; Smoker = logical([1;0;1;0;1]); Height = [71;69;64;67;64]; Weight = [176;163;131;133;119]; BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80]; T = table(Age,Smoker,Height,Weight,BloodPressure)
T=5×5 table
Age Smoker Height Weight BloodPressure
___ ______ ______ ______ _____________
38 true 71 176 124 93
43 false 69 163 109 77
38 true 64 131 125 83
40 false 67 133 117 75
49 true 64 119 122 80
DimensionNames
속성을 사용하여 테이블 차원 이름을 표시합니다. 두 번째 차원의 디폴트 이름은 Variables
입니다.
T.Properties.DimensionNames
ans = 1x2 cell
{'Row'} {'Variables'}
구문 T.Variables
를 사용하여 테이블 데이터를 행렬로서 액세스합니다. 이 구문은 중괄호 구문 T{:,:}
를 사용하여 모든 내용에 액세스하는 것과 동일합니다. 테이블 데이터를 하나의 행렬로 결합할 수 없는 경우, 오류 메시지가 나타납니다.
T.Variables
ans = 5×6
38 1 71 176 124 93
43 0 69 163 109 77
38 1 64 131 125 83
40 0 67 133 117 75
49 1 64 119 122 80
두 번째 차원의 이름을 바꿉니다. 이름을 변경한 경우, 새 이름을 사용하여 데이터에 액세스할 수 있습니다.
T.Properties.DimensionNames{2} = 'PatientData';
T.PatientData
ans = 5×6
38 1 71 176 124 93
43 0 69 163 109 77
38 1 64 131 125 83
40 0 67 133 117 75
49 1 64 119 122 80
크기와 변수 유형 지정하기
테이블 크기와 변수의 데이터형을 지정하여 테이블을 사전할당합니다. table
함수는 지정하는 데이터형에 적합한 디폴트 값으로 변수를 채웁니다. 또한 변수에 디폴트 이름을 지정하지만, 사용자가 직접 변수 이름을 할당할 수도 있습니다. 사전할당에서는 나중에 테이블에 데이터를 추가할 수 있도록 공간을 제공합니다.
sz = [4 3]; varTypes = {'double','datetime','string'}; T = table('Size',sz,'VariableTypes',varTypes)
T=4×3 table
Var1 Var2 Var3
____ ____ _________
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
변수의 이름을 지정하려면 'VariableNames'
이름-값 쌍의 인수를 사용하십시오.
varNames = {'Temperature','Time','Station'}; T2 = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames)
T2=4×3 table
Temperature Time Station
___________ ____ _________
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
데이터 행을 T2
의 처음 2개 행에 추가합니다. 사전할당 기법은 코드가 한 번에 1개 또는 적은 수의 데이터 행을 추가할 때 유용할 수 있습니다. 행을 추가할 때마다 일일이 테이블을 늘리는 대신 데이터를 추가할 수 있는 공간이 이미 있는 테이블 변수를 채울 수 있습니다.
T2(1,:) = {75,datetime('now'),"S1"}; T2(2,:) = {68,datetime('now')+1,"S2"}
T2=4×3 table
Temperature Time Station
___________ ____________________ _________
75 14-Aug-2023 23:00:11 "S1"
68 15-Aug-2023 23:00:11 "S2"
0 NaT <missing>
0 NaT <missing>
한 줄의 데이터 값을 셀형 배열에 담을 수 있습니다. 셀형 배열에서 행에 값을 할당하면 셀형 배열의 요소가 테이블 행에 할당됩니다.
변수 이름 지정하기
배열에서 테이블을 만듭니다. 테이블 변수 이름을 지정하려면 'VariableNames'
이름-값 쌍의 인수를 사용하십시오. 예를 들어, 다른 입력 인수가 작업 공간 변수가 아닌 경우 'VariableNames'
를 사용하여 이름을 지정할 수 있습니다.
T = table(categorical({'M';'F';'M'}),[45;32;34],... {'NY';'CA';'MA'},logical([1;0;0]),... 'VariableNames',{'Gender','Age','State','Vote'})
T=3×4 table
Gender Age State Vote
______ ___ ______ _____
M 45 {'NY'} true
F 32 {'CA'} false
M 34 {'MA'} false
주 이름을 행 이름으로 갖는 테이블을 만듭니다. table
함수를 사용할 때에는 'VariableNames'
이름-값 쌍과 'RowNames'
이름-값 쌍을 모두 지정할 수 있습니다.
T = table(categorical({'M';'F';'M'}),[45;32;34],logical([1;0;0]),... 'VariableNames',{'Gender','Age','Vote'},... 'RowNames',{'NY';'CA';'MA'})
T=3×3 table
Gender Age Vote
______ ___ _____
NY M 45 true
CA F 32 false
MA M 34 false
행 이름 지정하기
테이블의 행 이름을 지정합니다. 테이블에 반드시 행 이름이 있어야 하는 것은 아니지만, 행 이름을 지정하면 행 이름으로 테이블의 요소를 참조할 수 있습니다. 또한 테이블의 첫 번째 차원 이름을 사용하면 행 이름 집합에 액세스할 수 있습니다.
환자 데이터를 포함하는 배열을 만듭니다.
LastName = {'Sanchez';'Johnson';'Lee';'Diaz';'Brown'}; Age = [38;43;38;40;49]; Height = [71;69;64;67;64]; Weight = [176;163;131;133;119];
배열을 포함하는 테이블을 만듭니다. LastName
을 테이블 행 이름의 소스로 지정합니다. 테이블에는 3개의 변수만 있습니다. 행 이름은 테이블 변수가 아니라 테이블 속성입니다.
T = table(Age,Weight,Height,'RowNames',LastName)
T=5×3 table
Age Weight Height
___ ______ ______
Sanchez 38 176 71
Johnson 43 163 69
Lee 38 131 64
Diaz 40 133 67
Brown 49 119 64
행에 행 이름이 있기 때문에 이름으로 T
에 있는 행의 요소를 참조할 수 있습니다.
T('Lee',:)
ans=1×3 table
Age Weight Height
___ ______ ______
Lee 38 131 64
여러 행을 지정하려면 셀형 배열을 사용하십시오.
T({'Lee','Brown'},:)
ans=2×3 table
Age Weight Height
___ ______ ______
Lee 38 131 64
Brown 49 119 64
T
의 모든 행 이름을 셀형 배열로서 액세스하려면 구문 T.Row
를 사용하십시오. 기본적으로 Row
는 테이블의 첫 번째 차원 이름입니다.
T.Row
ans = 5x1 cell
{'Sanchez'}
{'Johnson'}
{'Lee' }
{'Diaz' }
{'Brown' }
첫 번째 차원 이름을 변경합니다. 이름을 변경한 경우, 새 이름을 사용하여 행 이름에 액세스할 수 있습니다.
T.Properties.DimensionNames{1} = 'LastNames';
T.LastNames
ans = 5x1 cell
{'Sanchez'}
{'Johnson'}
{'Lee' }
{'Diaz' }
{'Brown' }
string형 배열을 사용하여 테이블 변수와 행 이름 지정하기
R2017a부터는 큰따옴표를 사용하여 string형을 생성하고 string형 배열을 테이블 변수로 추가할 수 있습니다.
FlightNum = [1261;547;3489]; Customer = ["Jones";"Brown";"Smith"]; Date = datetime(2016,12,20:22)'; Rating = categorical(["Good";"Poor";"Fair"]); Comment = ["Flight left on time, not crowded";... "Late departure, ran out of dinner options";... "Late, but only by half an hour. Otherwise fine."]; T = table(FlightNum,Customer,Date,Rating,Comment)
T=3×5 table
FlightNum Customer Date Rating Comment
_________ ________ ___________ ______ _________________________________________________
1261 "Jones" 20-Dec-2016 Good "Flight left on time, not crowded"
547 "Brown" 21-Dec-2016 Poor "Late departure, ran out of dinner options"
3489 "Smith" 22-Dec-2016 Fair "Late, but only by half an hour. Otherwise fine."
string형 배열의 텍스트를 행 이름으로 사용하기 위해 string형 배열을 문자형 벡터로 구성된 셀형 배열로 변환합니다. 그런 다음 행 이름을 가진 테이블을 만듭니다.
Customer = cellstr(Customer);
T = table(FlightNum,Date,Rating,Comment,'RowNames',Customer)
T=3×4 table
FlightNum Date Rating Comment
_________ ___________ ______ _________________________________________________
Jones 1261 20-Dec-2016 Good "Flight left on time, not crowded"
Brown 547 21-Dec-2016 Poor "Late departure, ran out of dinner options"
Smith 3489 22-Dec-2016 Fair "Late, but only by half an hour. Otherwise fine."
변수를 개별적으로 할당하여 테이블 만들기
서로 다른 날짜에 기록된 세 곳의 총 적설량을 포함하는 작업 공간 변수를 만듭니다. 이러한 변수는 행 벡터입니다.
Date = {'12/25/11','1/2/12','1/23/12','2/7/12','2/15/12'}; location1 = [20 5 13 0 17]; location2 = [18 9 21 5 12]; location3 = [26 10 16 3 15];
이러한 변수로 테이블을 만드는 한 가지 방법은 table
함수를 구문 T = table(Date',location1',location2',location3')
으로 호출하는 것입니다. 작업 공간 변수가 행 벡터이므로, 이를 전치하여 테이블에 열 방향 데이터로 넣어야 합니다. 따라서 입력 인수는 단순한 변수가 아니라 표현식입니다. 그 결과, table
은 디폴트 변수 이름 Var1
, Var2
, Var3
, Var4
를 가지는 T
를 만듭니다. T
를 만든 후 T.Properties.VariableNames
에 더 의미 있는 이름을 할당할 수 있습니다. 그러나, 빈 테이블을 만든 다음 새 이름으로 한 번에 하나씩 변수를 추가하는 것이 더 편리할 수도 있습니다.
빈 테이블을 만듭니다. 작업 공간 변수를 전치한 후 테이블에 열 벡터로 추가합니다. 각 작업 공간 변수를 T
에 할당하는 과정의 일부로, 테이블 변수에 의미 있는 이름을 제공합니다.
T = table; T.Date = Date'; T.Natick = location1'; T.Boston = location2'; T.Worcester = location3'
T=5×4 table
Date Natick Boston Worcester
____________ ______ ______ _________
{'12/25/11'} 20 18 26
{'1/2/12' } 5 9 10
{'1/23/12' } 13 21 16
{'2/7/12' } 0 5 3
{'2/15/12' } 17 12 15
임의의 문자를 사용하여 변수 이름 지정하기
R2019b부터는 유효하지 않은 MATLAB® 식별자인 테이블 변수 이름을 지정할 수 있습니다. 이러한 변수 이름은 공백과 비ASCII 문자를 포함할 수 있으며 임의의 문자를 선행 문자로 가질 수 있습니다. 이러한 변수 이름에 액세스할 경우 변수 이름을 따옴표로 묶으십시오.
환자 집합에 대한 데이터를 저장하는 테이블을 만듭니다. 환자의 나이와 흡연 여부로 시작합니다.
Age = [38;43;38;40;49]; Smoker = logical([1;0;1;0;1]); Height = [71;69;64;67;64]; Weight = [176;163;131;133;119]; BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80]; T = table(Age,Smoker)
T=5×2 table
Age Smoker
___ ______
38 true
43 false
38 true
40 false
49 true
변수 이름이 '29-May-2019 Blood Pressure Reading'
인 혈압 기록을 추가합니다. 점 구문을 사용하여 변수를 추가하거나 변수에 액세스할 수 있습니다. 변수의 이름이 유효한 MATLAB 식별자가 아니므로, 점 구문에 괄호와 따옴표를 사용하십시오.
T.('29-May-2019 Blood Pressure Reading') = BloodPressure
T=5×3 table
Age Smoker 29-May-2019 Blood Pressure Reading
___ ______ __________________________________
38 true 124 93
43 false 109 77
38 true 125 83
40 false 117 75
49 true 122 80
테이블 변수 이름이 유효한 MATLAB 식별자인 경우 괄호와 따옴표가 없는 점 구문을 사용할 수 있습니다.
T.Height = Height; T.Weight = Weight
T=5×5 table
Age Smoker 29-May-2019 Blood Pressure Reading Height Weight
___ ______ __________________________________ ______ ______
38 true 124 93 71 176
43 false 109 77 69 163
38 true 125 83 64 131
40 false 117 75 67 133
49 true 122 80 64 119
변수 이름을 사용하여 T
의 요소를 참조합니다.
T(:,{'Age','Smoker','29-May-2019 Blood Pressure Reading'})
ans=5×3 table
Age Smoker 29-May-2019 Blood Pressure Reading
___ ______ __________________________________
38 true 124 93
43 false 109 77
38 true 125 83
40 false 117 75
49 true 122 80
제한 사항
다음 입력 이름에는 작은따옴표를 사용하십시오.
'DimensionNames'
R2021a 이상'RowNames'
'Size'
'VariableTypes'
'VariableNames'
가변 입력값과 혼동되지 않도록 이 이름들에는 큰따옴표로 묶인 string형 스칼라(예:
"RowNames"
)를 사용하지 마십시오.
팁
테이블을 받거나 반환하는 함수 목록은 테이블 항목을 참조하십시오.
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
이 함수는 tall형 배열을 지원하지만 다음과 같은 제한 사항이 있습니다.
구문
TT = table(T1,T2,...)
는 여러 개의 tall형 배열(T1,T2,...)
로부터 tall형 테이블을 만듭니다.'VariableNames'
이름-값 쌍 인수를 사용하여 변수 이름을 지정할 수 있습니다.
자세한 내용은 메모리에 담을 수 없는 큰 데이터를 위한 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
R2019b부터는 코드 생성을 위한 MATLAB 코드에 테이블을 사용할 수 있습니다. 자세한 내용은 Code Generation for Tables (MATLAB Coder) 항목과 Table Limitations for Code Generation (MATLAB Coder) 항목을 참조하십시오.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
사용법 관련 참고 및 제한 사항:
입력 배열은 분산 배열이어야 하고 모두 동일한 행 개수를 가져야 합니다.
결과는 첫 번째 차원에 대해 1차원 분산 방식을 사용한 분산 배열입니다.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2013b에 개발됨R2023a: 데이터를 추출하지 않고 테이블 및 타임테이블에 대해 직접 계산 수행
이제 데이터를 추출하지 않고 테이블 및 타임테이블에 대해 직접 계산을 수행할 수 있습니다. 테이블 및 타임테이블의 모든 변수는 계산을 지원하는 데이터형을 가져야 합니다. 한쪽 피연산자가 테이블 또는 타임테이블이고 다른 쪽 피연산자가 숫자형 배열이거나 논리형 배열일 때도 연산을 수행할 수 있습니다. 이전에는 모든 계산 시 테이블 및 타임테이블의 요소를 참조하는 방법으로 해당 테이블과 타임테이블에서 데이터를 추출해야 했습니다.
자세한 내용은 Direct Calculations on Tables and Timetables 항목과 Rules for Table and Timetable Mathematics 항목을 참조하십시오.
R2022a: 점 표기법 또는 여러 수준의 인덱싱에서 첨자를 사용할 때의 성능이 개선됨
점 표기법 사용 시 첨자를 사용할 때의 속도가 R2021b에 비해 R2022a에서 크게 빨라졌습니다. 또한 여러 수준의 인덱싱에서 첨자를 사용할 때의 속도도 더 빨라졌습니다.
예를 들어, 점 표기법을 사용하여 106개의 요소를 갖는 테이블 변수를 참조하는 경우 R2022a의 성능이 R2021b보다 4배 이상 빠릅니다.
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = 1:10000; tic; % Refer to variable using dot notation for i = indices x = t.Var1; end toc end
대략적인 실행 시간은 다음과 같습니다.
R2021b: 0.15초
R2022a: 0.035초
마찬가지로, 점 표기법을 사용하여 106개의 요소를 갖는 테이블 변수에 배열을 할당하는 경우 R2022a의 성능이 R2021b보다 약 3.6배 빠릅니다.
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = 1:10000; x = randi(1e6,1e6,1); tic; % Assign to variable using dot notation for i = indices t.Var1 = x; end toc end
대략적인 실행 시간은 다음과 같습니다.
R2021b: 0.23초
R2022a: 0.063초
또한 점 표기법과 괄호를 사용하여 테이블 변수의 요소에 개별 값을 할당하는 경우 R2022a의 성능이 R2021b보다 4배 이상 빠릅니다.
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = randi(1e6,1,10000); tic; % Assign to elements using dot notation and parentheses for i = indices t.Var1(i) = rand; end toc end
대략적인 실행 시간은 다음과 같습니다.
R2021b: 0.53초
R2022a: 0.12초
코드 실행 시간은 Windows® 10, Intel® Xeon CPU W-2133 @ 3.60GHz 테스트 시스템에서 각 버전별로 timingTest
함수를 호출하여 측정했습니다.
R2021b: 중괄호에서 첨자를 사용해 요소를 할당할 때의 성능이 개선됨
중괄호에 첨자를 사용해 값을 할당할 때의 속도가 R2021a에 비해 R2021b에서 크게 빨라졌습니다.
예를 들어, 요소를 106개 가진 3개의 테이블 변수에 할당할 때 아래 표시된 대로 R2021b에서 약 4.4배 빠릅니다.
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = randi(1e6,1,10000); tic; % Assign row vector of random values to randomly chosen row for i = indices t{i,:} = rand(1,3); end toc end
대략적인 실행 시간은 다음과 같습니다.
R2021a: 7.4초
R2021b: 1.7초
코드 실행 시간은 3.6GHz Intel Xeon W-2133 CPU가 탑재된 Windows 10 시스템에서 R2021a와 R2021b의 timingTest
함수를 호출하여 측정했습니다.
R2021a: 차원 이름은 예약된 이름과 일치할 수 없음
예약된 이름 'Properties'
, 'RowNames'
, 'VariableNames'
, ':'
중 하나와 일치하는 차원 이름을 할당하면 MATLAB에서 오류가 생성됩니다. 이전 릴리스에서는 MATLAB이 경고를 생성하고 예약된 이름과 다른 이름이 되도록 차원 이름을 수정했습니다.
R2020a: 테이블 변수에 첨자를 사용하여 요소를 할당할 때의 성능이 개선됨
테이블 변수에 첨자를 사용하여 할당할 때 속도가 확연히 더 빨라졌습니다. 성능은 기본적으로 각 테이블 변수의 요소 개수에 따라 일정하게 변합니다.
예를 들어, 점 인덱싱을 사용하여 요소를 106개 가진 변수에 요소를 할당할 때 아래와 같이 R2020a의 성능이 R2019b에서보다 약 2배 빠릅니다.
function timingTest() t = table(zeros(1e6,1)); indices = randi(1e6,1,10000); tic; for i = indices t.Var1(i) = rand; end toc end
대략적인 실행 시간은 다음과 같습니다.
R2019b: 1.20초
R2020a: 0.59초
마찬가지로, 중괄호를 사용한 할당 속도가 더 빨라졌습니다. 아래에 표시된 것처럼, 요소를 106개 가진 3개의 테이블 변수에 할당할 때 R2020a의 성능이 R2019b에서보다 약 1.2배 빠릅니다.
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = randi(1e6,1,10000); tic; for i = indices t{i,:} = rand; end toc end
대략적인 실행 시간은 다음과 같습니다.
R2019b: 8.04초
R2020a: 6.68초
코드 실행 시간은 Windows 10, Intel Xeon® W-2133 @ 3.60GHz 테스트 시스템에서 timingTest
함수를 호출하여 측정했습니다.
테이블 첨자를 사용한 할당을 함수 내에서 수행하는 경우에만 성능이 높아집니다. 테이블에 대한 첨자를 명령줄이나 try-catch
블록 내에서 사용할 때는 성능이 높아지지 않습니다.
R2019b: 변수 이름에 선행 공백과 후행 공백 문자가 포함될 수 있음
선행 또는 후행 공백 문자가 있는 테이블 및 타임테이블 변수 이름은 수정되지 않습니다.
이전 릴리스에서는 'VariableNames'
이름-값 쌍의 인수를 사용하여 변수 이름을 지정하거나 VariableNames
속성에 변수 이름을 할당한 경우 변수 이름에서 선행 및 후행 공백 문자가 삭제되었습니다.
이러한 문자를 직접 제거하려면, 먼저 이름에 strtrim
함수를 사용한 다음 이 이름을 테이블 또는 타임테이블에 변수 이름으로 할당하십시오.
R2019b: 변수 이름과 차원 이름은 고유해야 함
차원 이름과 일치하는 변수 이름 또는 변수 이름과 일치하는 차원 이름을 테이블에 할당하면 MATLAB에서 오류가 생성됩니다. 이전 릴리스에서는 MATLAB이 경고를 생성하고 고유한 값이 되도록 이름을 수정했습니다.
R2019b: 큰 테이블 변수에 첨자를 사용하여 요소를 할당할 때의 성능이 개선됨
큰 테이블 변수에 첨자를 사용하여 할당할 때 속도가 확연히 더 빨라졌습니다. 이제 성능은 기본적으로 각 테이블 변수의 요소 개수에 따라 일정하게 변합니다.
예를 들어, 점 인덱싱을 사용하여 요소를 106개 가진 변수에 요소를 할당할 때 아래와 같이 R2019b의 성능이 약 40배 빠릅니다.
function timingTest() t = table(zeros(1e6,1)); indices = randi(1e6,1,10000); tic; for i = indices t.Var1(i) = rand; end toc end
대략적인 실행 시간은 다음과 같습니다.
R2019a: 47.83초
R2019b: 1.20초
마찬가지로, 중괄호를 사용한 할당 속도가 더 빨라졌습니다. 예를 들어, 요소를 106개 가진 3개의 테이블 변수에 할당할 때 성능이 R2019b에서 약 18배 빠릅니다.
function timingTest() t = table(zeros(1e6,1), ones(1e6,1), nan(1e6,1)); indices = randi(1e6,1,10000); tic; for i = indices t{i,:} = rand; end toc end
대략적인 실행 시간은 다음과 같습니다.
R2019a: 156.39초
R2019b: 8.51초
코드 실행 시간은 3.6GHz Intel Xeon W-2133 CPU가 탑재된 Windows 10 시스템에서 각 버전별로 timingTest
함수를 호출하여 측정했습니다.
테이블 변수가 클수록 성능이 높아지는 정도가 더욱 큽니다. 그러나 테이블 첨자를 사용한 할당을 함수 내에서 수행하는 경우에만 성능이 높아집니다. 테이블 첨자를 사용한 할당을 명령줄이나 try-catch 블록 내에서 수행할 때는 성능이 높아지지 않습니다.
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)