Main Content

텍스트를 숫자형 값으로 변환하기

이 예제에서는 텍스트를 그 텍스트가 나타내는 숫자형 값으로 변환하는 방법을 보여줍니다. 일반적으로, 플로팅하거나 계산에 사용할 숫자를 나타내는 텍스트가 있을 때 이러한 변환을 수행해야 합니다. 예를 들어, 텍스트는 텍스트 파일 또는 스프레드시트에서 가져온 것일 수 있습니다. 텍스트를 MATLAB®으로 가져올 때 숫자형 값으로 아직 변환하지 않았다면, 이 예제에 표시된 함수를 사용할 수 있습니다.

string형 배열, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열을 숫자형 값으로 변환할 수 있습니다. 텍스트는 16진수 값 또는 2진수 값을 나타낼 수 있습니다. 하지만, 이러한 텍스트를 숫자로 변환할 경우 10진수 값으로 저장됩니다. 또한 날짜/시간을 나타내는 텍스트를 숫자형 값처럼 처리될 수 있는 datetime 또는 duration 값으로 변환할 수 있습니다.

배정밀도 값

텍스트를 배정밀도 값으로 변환할 때는 str2double 함수를 사용하는 것이 좋습니다. 이 함수는 문자형 벡터, string형 배열, 문자형 벡터로 구성된 셀형 배열을 변환할 수 있습니다.

예를 들어, 작은따옴표를 사용하여 문자형 벡터를 만든 후 이를 그 벡터가 나타내는 숫자로 변환해 보겠습니다.

X = str2double('3.1416')
X = 3.1416

입력 인수가 string형 배열 또는 문자형 벡터로 구성된 셀형 배열인 경우 str2double은 입력 인수를 같은 크기를 갖는 숫자형 배열로 변환합니다. 큰따옴표를 사용하여 string형을 생성할 수 있습니다. (문자열은 string 데이터형을 갖는 반면, 문자형 벡터는 char 데이터형을 갖습니다.)

str = ["2.718","3.1416";
       "137","0.015"]
str = 2x2 string
    "2.718"    "3.1416"
    "137"      "0.015" 

   X = str2double(str)
X = 2×2

    2.7180    3.1416
  137.0000    0.0150

str2double 함수는 쉼표(천 단위 구분 기호)와 소수점을 포함한 텍스트를 변환할 수 있습니다. 예를 들어, str2double을 사용하여 아래 표에 나와 있는 Balance 변수를 변환할 수 있습니다. Balance는 쉼표를 천 단위 구분 기호로 사용하여 숫자를 문자열로 나타냅니다.

load balances
balances
balances=3×2 table
    Customer       Balance  
    _________    ___________

    "Diaz"       "13,790.00"
    "Johnson"    "2,456.10" 
    "Wu"         "923.71"   

T.Balance = str2double(T.Balance)
T=3×2 table
    Customer     Balance
    _________    _______

    "Diaz"        13790 
    "Johnson"    2456.1 
    "Wu"         923.71 

str2double은 텍스트를 숫자로 변환할 수 없는 경우 NaN 값을 반환합니다.

str2num 함수도 텍스트를 숫자로 변환할 수 있지만, 이 함수는 권장되지 않습니다. str2numeval 함수를 사용하므로, 텍스트 입력값에 함수 이름이 포함되어 있을 때 의도치 않은 부작용이 발생할 수 있습니다. 이러한 문제를 방지하려면 str2double을 사용하십시오.

또는 double 함수를 사용하여 문자열을 배정밀도 값으로 변환할 수도 있습니다. 입력값이 string형 배열인 경우, doublestr2double과 마찬가지로 크기가 같은 숫자형 배열을 반환합니다. 하지만 입력값이 문자형 벡터인 경우에는 double이 개별 문자를 해당 Unicode® 값을 나타내는 숫자로 변환합니다.

X = double("3.1416")
X = 3.1416
X = double('3.1416')
X = 1×6

    51    46    49    52    49    54

다음은 텍스트를 숫자형 값으로 변환하기 위한 모범 사례를 요약한 것입니다.

  • 텍스트를 숫자형 값으로 변환하려면 str2double 함수를 사용하십시오. 이 함수는 string형 배열, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열을 일관되게 처리합니다.

  • string형 배열의 경우 double 함수를 사용할 수도 있습니다. 하지만 이 함수는 문자형 벡터를 다르게 처리합니다.

  • str2num사용하지 마십시오. 이 함수는 의도치 않은 결과를 초래할 수 있는 eval 함수를 호출합니다.

16진수 값과 2진수 값

16진수 숫자 및 2진수 숫자를 텍스트 또는 리터럴로 나타낼 수 있습니다. 이러한 숫자를 리터럴로 작성할 때는 0x 접두사 및 0b 접두사를 사용해야 합니다. 이러한 숫자를 텍스트로 나타낸 다음 변환할 때는 접두사를 사용할 수 있지만 반드시 그럴 필요는 없습니다.

예를 들어, 16진수 숫자를 리터럴로 작성해 보겠습니다. 이 경우 접두사가 필요합니다.

D = 0x3FF
D = uint16
    1023

그런 다음, hex2dec 함수를 사용하여 같은 값을 나타내는 텍스트를 변환해 봅니다. 이 함수는 접두사를 인식하지만 접두사가 꼭 필요한 것은 아닙니다.

D = hex2dec('3FF')
D = 1023
D = hex2dec('0x3FF')
D = 1023

bin2dec 함수를 사용하여 2진수 값을 나타내는 텍스트를 변환해 봅니다.

D = bin2dec('101010')
D = 42
D = bin2dec('0b101010')
D = 42

날짜/시간

MATLAB은 날짜/시간을 저장하고 이를 숫자형 값으로 처리하기 위해 datetime 데이터형 및 duration 데이터형을 제공합니다. 날짜/시간을 나타내는 텍스트를 변환하려면 datetime 함수 및 duration 함수를 사용하십시오.

날짜를 나타내는 텍스트를 datetime 값으로 변환합니다. datetime 함수는 날짜/시간에 대한 많은 일반적인 형식을 인식합니다.

C = '2019-09-20'
C = 
'2019-09-20'
D = datetime(C)
D = datetime
   20-Sep-2019

날짜/시간을 나타내는 배열을 변환할 수 있습니다.

str = ["2019-01-31","2019-02-28","2019-03-31"]
str = 1x3 string
    "2019-01-31"    "2019-02-28"    "2019-03-31"

D = datetime(str)
D = 1x3 datetime
   31-Jan-2019   28-Feb-2019   31-Mar-2019

텍스트를 duration형 값으로 변환하는 경우에는 hh:mm:ss 형식 또는 dd:hh:mm:ss 형식을 사용합니다.

D = duration('12:34:56')
D = duration
   12:34:56

참고 항목

| | | | | |

관련 항목