MATLAB-문자열

MATLAB에서 문자열을 만드는 것은 매우 간단합니다. 사실 우리는 여러 번 사용했습니다. 예를 들어, 명령 프롬프트에 다음을 입력합니다.

my_string = 'Tutorials Point'

MATLAB은 위의 문을 실행하고 다음 결과를 반환합니다.

my_string = Tutorials Point

MATLAB은 모든 변수를 배열로 간주하고 문자열은 문자형 배열로 간주합니다. 사용하자whos 위에서 생성 된 변수를 확인하는 명령-

whos

MATLAB은 위의 문을 실행하고 다음 결과를 반환합니다.

Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char

흥미롭게도 다음과 같은 숫자 변환 함수를 사용할 수 있습니다. uint8 또는 uint16문자열의 문자를 숫자 코드로 변환합니다. 그만큼char 함수는 정수 벡터를 다시 문자로 변환합니다.

스크립트 파일을 생성하고 다음 코드를 입력하십시오.

my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string)        % 8-bit ascii values
str_back_to_char= char(str_ascii)  
str_16bit = uint16(my_string)       % 16-bit ascii values
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

직사각형 문자 배열

지금까지 논의한 문자열은 1 차원 문자 배열입니다. 그러나 그 이상을 저장해야합니다. 프로그램에 더 많은 차원의 텍스트 데이터를 저장해야합니다. 이것은 직사각형 문자 배열을 생성함으로써 가능합니다.

직사각형 문자 배열을 만드는 가장 간단한 방법은 필요에 따라 세로 또는 가로로 2 개 이상의 1 차원 문자 배열을 연결하는 것입니다.

다음 방법 중 하나로 문자열을 수직으로 결합 할 수 있습니다.

  • MATLAB 연결 연산자 사용 []세미콜론 (;)으로 각 행을 구분합니다. 이 방법에서 각 행은 동일한 수의 문자를 포함해야합니다. 길이가 다른 문자열의 경우 필요에 따라 공백 문자로 채워야합니다.

  • 사용 char함수. 문자열의 길이가 다른 경우 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

다음 방법 중 하나로 문자열을 수평으로 결합 할 수 있습니다.

  • MATLAB 연결 연산자를 사용하여 []및 입력 문자열을 쉼표 또는 공백으로 분리하는 단계를 포함합니다. 이 메서드는 입력 배열의 모든 후행 공백을 유지합니다.

  • 문자열 연결 기능을 사용하여, 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

문자열을 셀형 배열로 결합

이전 논의에서 배열의 모든 문자열이 동일한 길이 여야하므로 길이가 다른 문자열을 결합하는 것이 고통 스러울 수 있음이 분명합니다. 길이를 동일하게하기 위해 문자열 끝에 공백을 사용했습니다.

그러나 문자열을 결합하는보다 효율적인 방법은 결과 배열을 셀형 배열로 변환하는 것입니다.

MATLAB 셀형 배열은 배열에 다양한 크기와 유형의 데이터를 포함 할 수 있습니다. 셀형 배열은 다양한 길이의 문자열을 저장하는보다 유연한 방법을 제공합니다.

그만큼 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의 문자열 함수

MATLAB은 문자열을 생성, 결합, 구문 분석, 비교 및 ​​조작하는 다양한 문자열 함수를 제공합니다.

다음 표는 MATLAB의 문자열 함수에 대한 간략한 설명을 제공합니다.

함수 목적
문자 배열에 텍스트를 저장하고 문자 배열을 결합하는 기능 등
공백 공백 문자 문자열 만들기
Celltr 문자형 배열에서 string 형으로 구성된 셀형 배열 만들기
문자형 배열 (문자열)로 변환
iscellstr 입력 값이 문자열로 구성된 셀형 배열인지 확인
ischar 항목이 문자형 배열인지 확인
스프린트 데이터를 문자열로 포맷
strcat 가로로 문자열 연결
strjoin 셀형 배열의 문자열을 단일 문자열로 결합
문자열의 일부를 식별하고 부분 문자열을 찾고 바꾸는 기능
ischar 항목이 문자형 배열인지 확인
isletter 알파벳 문자 인 배열 요소
isspace 공백 문자 인 배열 요소
isstrprop 문자열이 지정된 범주에 속하는지 확인
sscanf 문자열에서 형식화 된 데이터 읽기
strfind 다른 문자열에서 하나의 문자열 찾기
strrep 하위 문자열 찾기 및 바꾸기
strsplit 지정된 구분 기호에서 문자열 분할
Strtok 문자열의 선택된 부분
validatestring 텍스트 문자열의 유효성 확인
Symvar 식에서 기호 변수 결정
정규식 정규식 일치 (대소 문자 구분)
정규식 정규식 일치 (대소 문자 구분 안 함)
regexprep 정규식을 사용하여 문자열 바꾸기
regexptranslate 문자열을 정규식으로 번역
문자열 비교를위한 함수
strcmp 문자열 비교 (대소 문자 구분)
strcmpi 문자열 비교 (대소 문자 구분 안 함)
strncmp 문자열의 처음 n 개 문자 비교 (대소 문자 구분)
strncmpi 문자열의 처음 n 자 비교 (대소 문자 구분 안 함)
문자열을 대문자 또는 소문자로 변경하고 공백을 만들거나 제거하는 기능
비우기 문자열 끝에서 후행 공백 제거
strtrim 문자열에서 선행 및 후행 공백 제거
보다 낮은 문자열을 소문자로 변환
높은 문자열을 대문자로 변환
Strjust 문자 배열 양쪽 정렬

다음 예제는 위에서 언급 한 문자열 함수 중 일부를 보여줍니다.

문자열 서식 지정

스크립트 파일을 생성하고 다음 코드를 입력하십시오.

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

문자열 결합

스크립트 파일을 생성하고 다음 코드를 입력하십시오.

%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};

% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")

파일을 실행하면 다음 결과가 표시됩니다.

str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange

문자열 찾기 및 바꾸기

스크립트 파일을 생성하고 다음 코드를 입력하십시오.

students = {'Zara Ali', 'Neha Bhatnagar', ...
            'Monica Malik', 'Madhu Gautam', ...
            'Madhu Sharma', 'Bhawna Sharma',...
            'Nuha Ali', 'Reva Dutta', ...
            'Sunaina Ali', 'Sofia Kabir'};
 
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
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
}

문자열 비교

스크립트 파일을 생성하고 다음 코드를 입력하십시오.

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