텍스트를 숫자형 값으로 변환하기
이 예제에서는 텍스트를 그 텍스트가 나타내는 숫자형 값으로 변환하는 방법을 보여줍니다. 일반적으로, 플로팅하거나 계산에 사용할 숫자를 나타내는 텍스트가 있을 때 이러한 변환을 수행해야 합니다. 예를 들어, 텍스트는 텍스트 파일 또는 스프레드시트에서 가져온 것일 수 있습니다. 텍스트를 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
함수도 텍스트를 숫자로 변환할 수 있지만, 이 함수는 권장되지 않습니다. str2num
은 eval
함수를 사용하므로, 텍스트 입력값에 함수 이름이 포함되어 있을 때 의도치 않은 부작용이 발생할 수 있습니다. 이러한 문제를 방지하려면 str2double
을 사용하십시오.
또는 double
함수를 사용하여 문자열을 배정밀도 값으로 변환할 수도 있습니다. 입력값이 string형 배열인 경우, double
은 str2double
과 마찬가지로 크기가 같은 숫자형 배열을 반환합니다. 하지만 입력값이 문자형 벡터인 경우에는 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
참고 항목
bin2dec
| hex2dec
| str2double
| datetime
| duration
| double
| table