Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[MATLAB] String형과 Char형 결합 본문

프로그래밍 Programming/매트랩 MATLAB

[MATLAB] String형과 Char형 결합

보통의공대생 2022. 2. 24. 10:50

매트랩에서는 다양한 자료형을 지원하고 있다. 그 중에서 string과 char에 대해서 이야기하려고 한다.

 

이렇게 string과 char를 특정해서 이야기하는 이유는 string과 char의 차이를 모르고 두 문자형의 데이터를 결합하려고 하면 문제가 생기기 때문이다.

 

보통 MATLAB Code를 돌리고 나서 나온 결과값을 .mat이든 .csv, .txt든 저장을 하고 싶을 수 있다.

이 때는 파일명을 특정해줘야하는데, 파일명은 문자이다. (데이터형의 문제가 아니라 진짜 그냥 문자이다.)

 

따라서 파일명을

filename = "hello.mat"
save(filename, 'var.mat') % 변수이름이 var일 때

이런 식으로 저장을 할 수 있다.

하지만 파일명이 지속적으로 바뀌어야 하는 경우나, 파일을 저장하고 싶은 폴더가 바뀔 수도 있기 때문에

 

filepath = ".\folder\"
filename = filepath + "hello.mat"
save(filename, 'var.mat')

이렇게 파일명을 다른 문자열끼리 조합해서 쓴다.

그러나 중간에 숫자가 들어가고 하면서 char형 배열과 string형이 꼬이게 되면 결합이 안되는 문제를 발견했다. 그래서 char형과 string을 구별해야겠다고 생각했다.

 

Char형의 경우에는 C를 배웠던 사람이라면 익숙할 것이다.

 c = 'Hello World'

다음과 같이 작은따옴표로 표시한 변수 c는 char형 배열(문자형 배열)이다.

C로 치면 char c[]같은 느낌이다.

 

그런데 MATLAB에서는 string형을 지원함으로써 문장을 string형 배열로 저장할 수 있다.

str = "hello world"

이렇게 큰따옴표를 쓰면 string형 배열이 된다.

 

주의할 점은 char형 배열은 배열 크기에 주의해야하며 string형이 훨씬 직관적이고 유연하게 쓸 수 있다.

 

위 그림을 보면 char형 배열은 배열의 크기를 고려해서 결합할 수 있는데 아래의 string형 배열은 쉽게 결합되는 것을 확인할 수 있다. 그럼 배열 크기를 맞춰서 더하면 어떻게 될까?

 

아마 hello의 ascii 코드 숫자와 world의 ascii 코드 숫자를 더한 것일 가능성이 높다

 

 

 

위 표를 보면 MATLAB이 알파벳 아스키 코드를 더한 것으로 알 수 있다.

 

char형은 C언어에서와 비슷하게 작동하는 것처럼 보인다.

따라서 파일명과 같이 유연한 문자열을 원한다면 string을 써야한다.

 

Comments