HOWTO · MATLAB

MATLAB에서 숫자를 문자열로 변환

이 자습서에서는 MATLAB의 num2str() 함수를 사용하여 숫자를 문자열로 변환하는 방법에 대해 설명합니다.

이 페이지의 내용

MATLAB에서 숫자 값을 문자 텍스트로 변환하려면 num2str()를 사용하고, 정수에는 int2str(), MATLAB 문자열 데이터가 필요할 때는 string()을 사용합니다. 예를 들어 num2str(42)는 문자 텍스트 42를 만듭니다. 소수의 서식을 지정하거나 배열을 다룰 때는 함수마다 반환하는 텍스트 데이터의 종류가 다르므로 적절한 함수를 선택해야 합니다.

MATLAB에서 숫자를 문자열로 변환

다음 작업에 필요한 결과 유형에 따라 함수를 선택하세요. num2str()와 int2str()는 문자 배열을 반환하고, string()은 MATLAB 문자열 데이터를 반환합니다. 문자 배열은 기존 문자 기반 함수나 서식 지정 작업에 유용하고, 문자열 배열은 코드의 나머지 부분에서 MATLAB 문자열을 기대할 때 유용합니다.

아래의 실행 예제는 MATLAB과 공통으로 사용할 수 있는 Octave 호환 구문을 사용합니다. num2str() 예제는 스칼라 숫자를 문자로 변환하고, int2str() 예제는 정수를 문자로 변환합니다. 각 예제는 해당 함수를 설명하는 절에 나옵니다. Octave 지원을 전제로 하지 않으므로 string() 절에서는 MATLAB 문자열 데이터를 별도로 설명합니다. num2str()와 int2str() 절의 두 Octave 예제는 실행을 마쳤으며 각각 42와 -23을 출력했습니다. string() 구문은 MATLAB 전용 예시이며, 제공된 실행 근거로 검증되지는 않았습니다.

숫자 값과 서식 지정에는 num2str() 사용

정수, 소수, 배열 등 일반적인 숫자 값에는 num2str()를 사용합니다. 기본 형식은 num2str(A)입니다. 스칼라의 표시 형식을 지정하려면 num2str(x, '%.2f')와 같은 서식 지정자를 전달하고, 유효 자릿수를 지정하려면 num2str(x, 4)처럼 정밀도를 전달하세요. 두 옵션의 의미는 다릅니다. 서식 지정자는 출력 패턴을 제어하고, 숫자형 정밀도 인수는 유효 자릿수를 설정합니다. 소수점 이하 자릿수를 고정하려면 '%.2f'와 같은 서식이 보통 더 명확합니다.

이 예제를 실행하세요:

value = 42;
textValue = num2str(value);
disp(textValue);
42

textValue는 숫자 자릿수를 담은 문자 데이터입니다. 소수 num2str(3.14159)는 기본 서식에 따라 3.1416과 같은 텍스트를 만듭니다. 소수점 이하 자릿수를 제어하려면 서식 지정자를 전달하세요. num2str(3.14159, '%.2f')는 3.14를 만듭니다. 두 번째 인수에 숫자를 지정하면 유효 자릿수를 제어합니다. num2str(3.14159, 4)는 3.142를 만듭니다. 이 두 제어 방식은 서로 다릅니다. '%.2f'는 소수점 뒤 두 자리를 요청하고, 4는 유효 숫자 네 자리를 요청합니다. 여기서 추가한 예제와 결과 표시는 구문 및 결과를 설명하기 위한 예시입니다. 제공된 실행 근거로 확인된 것은 앞의 42 예제뿐입니다.

숫자 배열에 num2str([1.25 2.5])를 적용하면 값 사이에 공백이 있는 1.25 2.5와 같은 문자 텍스트가 만들어집니다. 행렬을 입력하면 여러 행의 문자 데이터가 만들어집니다. 숫자마다 요소 하나씩 있는 MATLAB 문자열 배열을 만드는 것은 아닙니다. 과학적 표기법에도 num2str()를 사용할 수 있습니다. 표현 방식은 값과 서식 옵션에 따라 달라지므로, 지수 표기가 중요하다면 특정 표기법에 의존하지 마세요. 표현을 명확히 지정하려면 서식을 지정하세요. 배열 예제도 여기서는 실행하지 않은 설명용 예시입니다.

특정 위치의 숫자 문자를 선택하려면 먼저 숫자를 문자 데이터로 변환한 뒤 문자 배열을 인덱싱합니다. 예를 들어 digits = num2str(9876); secondDigit = digits(2);는 문자 '8'을 선택합니다. 이는 문자 인덱싱이므로 secondDigit는 숫자 값이 아니라 문자입니다. 이후 산술 연산이 필요하면 별도로 변환하세요. str2num()은 숫자 텍스트를 파싱하지만, 한 자리 숫자에는 str2double()이 더 직접적인 선택입니다.

정수 값에는 int2str() 사용

입력이 정수이고 간단한 문자 표현이면 충분할 때 int2str()를 사용하세요. 스칼라 또는 배열 정수 값을 받아 문자 데이터를 반환합니다. 배열의 요소는 문자 배열 안에서 정렬된 텍스트로 표시됩니다. 이때 공백은 열을 맞추기 위한 것이며, 구분자로 이어 붙인 문자열을 뜻하지 않습니다.

이 예제를 실행하세요:

count = -23;
countText = int2str(count);
disp(countText);
-23

정수 배열에 int2str([12 345; 6 78])를 적용하면 입력 행에 대응하는 두 행의 문자 배열이 만들어집니다. 공백은 각 열의 값을 정렬합니다. 이 배열 결과는 여기서 실행하지 않은 설명용 예시입니다.

소수 값, 서식이 지정된 출력 또는 유효 자릿수 제어가 필요하면 num2str()를 사용하세요. int2str()는 서식 지정 함수가 아니므로 소수 부분을 보존하는 데 사용하면 안 됩니다.

MATLAB 문자열 배열에는 string() 사용

숫자 값을 문자열 데이터로 변환하려면 MATLAB의 string()을 사용하세요. 스칼라의 경우 string(42)는 문자열 값 "42"를 만듭니다. 배열의 경우 string([42 3.14])는 값이 ["42" "3.14"]인 1×2 문자열 배열을 만듭니다. 각 요소는 숫자 입력 하나에 대응하며, 함수가 행 전체를 하나의 문자 배열로 반환하는 것이 아닙니다. 이런 요소별 배열 형태는 다른 문자열과 값을 결합할 때 편리한 경우가 많습니다. 이 스칼라 및 배열 결과는 MATLAB 동작을 설명하기 위한 예시이며, 제공된 실행 근거로 검증되지는 않았습니다.

이 절의 예제는 MATLAB 구문을 보여 주기 위한 것이며 실행 검증을 거치지 않았습니다. 문자열 배열이 필요하면 사용 중인 MATLAB 환경에서 이 함수를 지원하는지 확인하고, 해당 환경에서 표시 결과를 확인하세요. char()를 숫자에서 텍스트로 변환하는 동등한 방법으로 취급하지 마세요. char()는 문자 코드나 문자열 데이터를 문자 배열로 변환하며, 이는 다른 작업입니다.

숫자 텍스트와 문자 코드 구분하기

65와 같은 숫자를 텍스트로 변환하면 숫자 자릿수 65가 됩니다. 문자 A가 만들어지는 것은 아닙니다. 반면 char(65)는 숫자 문자 코드 65를 MATLAB에서 사용하는 문자 인코딩에 해당하는 문자로 변환합니다. 문자 코드 값과 그에 대응하는 문자는 지원되는 문자 표현에 따라 달라지므로, 숫자를 텍스트로 서식 지정하는 일반적인 방법으로 사용할 수 없습니다.

각 작업을 구분하세요. 숫자 값을 나타내는 문자 텍스트에는 num2str() 또는 int2str()를 사용하고, MATLAB 문자열 데이터가 필요하면 string()을 사용하세요. 특정 위치의 숫자 문자가 필요하면 변환 후 문자 배열을 인덱싱하고, 숫자 값이 필요할 때만 선택한 문자를 별도로 파싱하세요.