TearDitch

[너Do 나Do MATLAB]#2 데이터 형식(Data Type) 본문

MATLAB

[너Do 나Do MATLAB]#2 데이터 형식(Data Type)

TearDitch 2018. 1. 13. 05:34

오늘은 MATLAB에서 다루는 데이터 형식(Data Type)에 대해서 간단히 알아보겠습니다.

 

MATLAB을 사용하게 되면 많은 변수를 다루게 되는데요. 이 때 이 변수가 어떤 형식의 정보를 담고 있는지에 따라 데이터 형식이 결정됩니다. 보통 C언어에서는 데이터 형식을 먼저 선언하게 되지만 MATLAB은 이와는 다르게 별도의 선언 없이 사용자가 어떤 정보를 담는지에 따라 데이터 형식이 결정되는 것입니다. MATLAB에서 다루는 기본 데이터 형식은 아래의 그림과 같습니다.

 

 

출처: https://kr.mathworks.com/help/matlab/matlab_prog/fundamental-matlab-classes.html

 

위의 그림에서 볼 수 있듯이 MATLAB은 기본적으로 거의 모든 데이터를 매트릭스(프로그래밍 언어로 표현한다면 array) 형태로 저장하게 됩니다. 그리고 그 매트릭스에 담기는 정보에 따라서 논리데이터(logical), 문자(char), 숫자, 테이블, 셀(cell), 구조체(structure) 마지막으로 함수의 핸들(function handle)로 나뉘어 집니다.

 

먼저 logical data(논리데이터)란 관계나 상태를 나타내는 데이터를 의미합니다. 대표적으로 참 또는 거짓이 있겠죠. 이것을 MATLAB에서는 참은 1로 거짓은 0으로 표현합니다. 이를 이용해서 배열을 인덱싱하거나 데이터 형식을 판단하고 또는 조건문 등에서 논리 연산을 수행할 수 있습니다.

 

2^3 > 7

ans =

  1

A = [1, 2];        % matrix는 [ ] 안에 넣습니다.

isempty(A)        % 빈행렬을 판단하는 함수

 ans =

   0

 

다음으로 char문자데이터를 의미합니다. 우리가 사용하는 거의 모든 형태의 문자를 입출력할 수 있습니다. 숫자는 문자와 서로 데이터 형식을 교환할 수 있습니다. 그리고 일반적으로 다수의 문자 데이터는 cell 형태로 저장하게 됩니다. cell은 뒤에서 다시 이야기하도록 하죠.

 

string = 'Hello World!';        % 문자는 ' ' 안에 넣습니다.

string

 ans =

 

 Hello World!

 

세 번째는 MATLAB에서 가장 많이 사용하게 되는 numeric data 입니다. 우리가 사용하는 모든 숫자를 의미합니다. MATLAB은 사용자가 별도의 선언을 하지 않는 이상 double형을 기본으로 제공합니다. 정수, 실수, 복소수를 표현할 수 있습니다. 일반적으로 matrix 형태로 입력을 하게 되고, 연산이 가능합니다.

 

a = 23;

b = 3.14159;

c = [1, 2, -34, 567];

 

a, b, c

 a =

23

 b =

3.1416

 c =

1    2    -34    567

 

네 번째로 살펴볼 table은 엑셀과 같이 범주와 데이터가 혼합된 형태입니다. 일반적으로 열을 중심으로 데이터가 구성되고 각 행과 열에 부여된 인덱스(이름)를 따라서 데이터를 구성할 수 있습니다. table을 구성하는 요소들은 숫자 matrix나 logical data로 사용할 수 있습니다. 또한 인덱스 정보를 통해 데이터에 접근할 수 있습니다.

 

LastName = {'Kim', 'Lee', 'Choi','Park'};

Age = [27, 41, 22, 35];

Height = [170, 178, 169, 155];

Weight = [75, 90, 63, 55]; 

T = table(Age, Height, Weight, 'RowName', LastName)    % table을 만드는 함수

 

 T =

Age    Height    Weight

-----   --------   ---------

Kim      27       170       75

Lee      41       178        90

Choi     22       169       63

Park     35       155       55

 

 

다섯 번째는 앞의 문자데이터를 설명하면서 언급했던 cell입니다. cell은 위에서 다룬 모든 데이터 형식을 포함할 수 있습니다. 일반적으로 '{ }' 기호를 사용하여 데이터를 콤마(,)로 구분합니다. cell의 요소들은 matrix 처럼 연산이 가능하고 인덱스를 통해 접근할 수 있습니다.

 

C = { 35, 'string', [1, 2; 3, 4]}

 

 

 C = 

 [35]    'string'    [2x2 double]

 

여섯 번째는 structure로 앞의 cell과 마찬가지로 모든 형식의 데이터를 포함할 수 있습니다. field를 통해 나뉘어 지며 field의 이름을 통해서 하위 요소들의 성격을 규정하고 관리할 수 있습니다. 또한 field를 통해서 모든 또는 개별 요소에 접근할 수 있습니다. 이 structure를 사용하게 되면 자신만의 데이터 형식으로 데이터 관리를 하는데 매우 용이합니다.

 

field1 = 'f1';    value1 = {'a', 'b'};

field2 = 'f2';    value2 = [23, 15, 3.14];

field3 = 'f3';    value3 = {'c', [1;2]};

s = struct(field1, value1, field2, value2, field3, value3)        % structure를 만드는 함수

 

 

 s =

 

 1x2 struct array wih fields:

 f1

 f2

 f3

 

마지막은 function handle로 c언어의 pointer 개념과 유사합니다. 어떤 함수가 handle을 반환한다면 그 함수를 실행 시킨 후에도 다시 함수를 실행하지 않고 함수의 내부로 접근하거나 수정이 가능합니다. MATLAB에서 많이 다루게 되는 그래프 형태가 대표적인데, 그래프 설정을 바꿀 때 유용하게 사용됩니다. 

 

오늘은 데이터 형식에 대해서 살펴보았는데요. 각 데이터 형식이 어떻게 사용되는지 알고 싶다면 shift + F1을 누르고 data type으로 검색을 해보면 각 데이터 형식에 따라 사용되는 다양한 함수와 활용법을 확인할 수 있습니다. 그럼 오늘은 여기까지...

 

 

Comments