В этом примере показано, как преобразовать текст в числовые значения, которые он представляет. Как правило, необходимо выполнить такие преобразования, когда у вас есть текст, который представляет числа, которые будут строиться или использоваться в вычислениях. Например, текст может прибыть из текстового файла или электронной таблицы. Если вы уже не преобразовали его в числовые значения при импорте его в MATLAB®, можно использовать функции, показанные в этом примере.
Можно преобразовать строковые массивы, векторы символов и массивы ячеек из символьных векторов к числовым значениям. Текст может представлять шестнадцатеричные или двоичные значения, хотя, когда вы преобразуете их в числа, они хранятся как десятичные значения. Можно также преобразовать текст, представляющий даты и время к datetime
или duration
значения, которые могут быть обработаны как числовые значения.
Рекомендуемый способ преобразовать текст в значения с двойной точностью состоит в том, чтобы использовать str2double
функция. Это может преобразовать векторы символов, строковые массивы и массивы ячеек из символьных векторов.
Например, создайте вектор символов с помощью одинарных кавычек и преобразуйте его в номер, который он представляет.
X = str2double('3.1416')
X = 3.1416
Если входной параметр является массивом строк или массивом ячеек из символьных векторов, то str2double
преобразует его в числовой массив, имеющий тот же размер. Можно создать строки с помощью двойных кавычек. (Строки имеют 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
функция. Если вход является массивом строк, то 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
функция. Это последовательно обрабатывает строковые массивы, векторы символов и массивы ячеек из символьных векторов.
Можно также использовать double
функция для строковых массивов. Однако это обрабатывает векторы символов по-другому.
Избегайте str2num
. Это вызывает eval
функция, которая может иметь непреднамеренные последствия.
Можно представлять шестнадцатеричные и двоичные числа как текст или как литералы. Когда вы пишете им как литералы, необходимо использовать 0x
и 0b
префиксы. Когда вы представляете их как текст и затем преобразуете их, можно использовать префиксы, но они не требуются.
Например, запишите шестнадцатеричный номер как литерал. Префикс требуется.
D = 0x3FF
D = uint16
1023
Затем преобразуйте текст, представляющий то же значение при помощи hex2dec
функция. Это распознает префикс, но не требует его.
D = hex2dec('3FF')
D = 1023
D = hex2dec('0x3FF')
D = 1023
Преобразуйте текст, представляющий двоичные значения с помощью bin2dec
функция.
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
' format ' .
D = duration('12:34:56')
D = duration
12:34:56
bin2dec
| datetime
| double
| duration
| hex2dec
| str2double
| table