MATLAB 문자열 완벽 가이드: 생성, 결합, 셀 배열 변환, 주요 함수
문자열 생성 기초
MATLAB에서 문자열 생성은 간단합니다. 명령 프롬프트에 다음과 같이 입력하면 됩니다.
my_string = 'Tutorials Point'
실행 결과:
my_string = Tutorials Point
MATLAB은 모든 변수를 배열로 다루며, 문자열은 문자 배열(character array)로 간주됩니다. whos 명령으로 확인해 보겠습니다.
whos
실행 결과:
Name Size Bytes Class Attributes
my_string 1x16 32 char
문자-숫자 변환
uint8, uint16 등으로 문자를 ASCII/유니코드 값으로 변환할 수 있고, char 함수로 다시 문자로 되돌릴 수 있습니다.
예제
my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string) % 8비트 ASCII 값
str_back_to_char = char(str_ascii)
str_16bit = uint16(my_string) % 16비트 유니코드 값
str_back_to_char = char(str_16bit)
실행 결과:
str_ascii = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
str_16bit = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
직사각형 문자 배열(Rectangular Character Array)
1차원 문자열을 여러 개 결합해 2차원 문자 행렬을 만들 수 있습니다. 각 행의 길이가 같아야 하며, 길이가 다를 경우 공백으로 채워야 합니다.
세로 결합(행 추가)
- 대괄호
[]와 세미콜론 ; 사용: 각 행의 문자 수 동일해야 함
char 함수 사용: 짧은 문자열은 뒤에 공백으로 자동 패딩
예제
doc_profile = ['Zara Ali '; 'Sr. Surgeon '; 'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', 'RN Tagore Cardiology Research Center')
실행 결과:
doc_profile = Zara Ali Sr. Surgeon R N Tagore Cardiology Research Center
doc_profile = Zara Ali Sr. Surgeon RN Tagore Cardiology Research Center
가로 결합(열 추가)
- 대괄호
[]와 쉼표/공백 사용: 끝 공백 유지
strcat 함수 사용: 끝 공백 제거 후 결합
예제
name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
실행 결과:
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
셀 배열로 문자열 결합
길이가 다른 문자열들을 다룰 때 공백 패딩 대신 셀 배열을 사용하면 더 유연합니다. cellstr 함수는 문자 배열을 문자열 셀 배열로 변환합니다.
예제
name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
실행 결과:
{ [1,1] = Zara Ali; [2,1] = Sr. Surgeon; [3,1] = R N Tagore Cardiology Research Center }
MATLAB 주요 문자열 함수
문자열 생성, 결합, 파싱, 비교, 조작을 위한 다양한 함수가 있습니다.
| 함수 | 용도 |
| 문자 배열 저장, 결합 등 |
| blanks | 공백 문자열 생성 |
| cellstr | 문자 배열 → 문자열 셀 배열 |
| char | 문자 배열(문자열)로 변환 |
| iscellstr | 문자열 셀 배열 여부 판단 |
| ischar | 문자 배열 여부 판단 |
| sprintf | 데이터를 문자열로 포맷 |
| strcat | 문자열 가로 결합 |
| strjoin | 셀 배열 문자열을 구분자로 결합 |
| 문자열 부분 식별, 찾기/바꾸기 |
| isletter | 알파벳 문자 여부 |
| isspace | 공백 문자 여부 |
| isstrprop | 지정 범주 문자 여부 |
| sscanf | 문자열에서 포맷된 데이터 읽기 |
| strfind | 부분 문자열 찾기 |
| strrep | 부분 문자열 찾아 바꾸기 |
| strsplit | 구분자로 문자열 분할 |
| strtok | 문자열 토큰 선택 |
| validatestring | 문자열 유효성 검사 |
| symvar | 표현식의 심볼릭 변수 확인 |
| regexp | 정규표현식 매칭(대소문자 구분) |
| regexpi | 정규표현식 매칭(대소문자 무시) |
| regexprep | 정규표현식으로 치환 |
| regexptranslate | 문자열을 정규표현식으로 변환 |
| 문자열 비교 |
| strcmp | 문자열 비교(대소문자 구분) |
| strcmpi | 문자열 비교(대소문자 무시) |
| strncmp | 앞 n자 비교(대소문자 구분) |
| strncmpi | 앞 n자 비교(대소문자 무시) |
| 대소문자 변환, 공백 처리 |
| deblank | 끝 공백 제거 |
| strtrim | 앞뒤 공백 제거 |
| lower | 소문자 변환 |
| upper | 대문자 변환 |
| strjust | 문자 배열 정렬 |
예제: 문자열 포맷팅(sprintf)
A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
실행 결과:
ans = 3141.592654
3141.59
+3141.59
3141.59
000003141.59
예제: 문자열 결합(strjoin)
str_array = {'red','blue','green','yellow','orange'};
str1 = strjoin(str_array, '-')
str2 = strjoin(str_array, ',')
실행 결과:
str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange
예제: 찾기/바꾸기(strrep, strtok)
students = {'Zara Ali', 'Neha Bhatnagar', 'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma', 'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
new_student = strrep(students(8), 'Reva', 'Poulomi')
first_names = strtok(students)
실행 결과:
new_student = { [1,1] = Poulomi Dutta }
first_names = { [1,1] = Zara; [1,2] = Neha; [1,3] = Monica; [1,4] = Madhu; [1,5] = Madhu; [1,6] = Bhawna; [1,7] = Nuha; [1,8] = Reva; [1,9] = Sunaina; [1,10] = Sofia }
예제: 문자열 비교(strcmp)
str1 = 'This is test'; str2 = 'This is text';
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end
실행 결과:
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal