В этом примере показано, как преобразовать текст в числовые значения, которые он представляет. Как правило, такие преобразования необходимо выполнять при наличии текста, представляющего числа для печати или использования в расчетах. Например, текст может быть получен из текстового файла или электронной таблицы. Если он еще не преобразован в числовые значения при импорте в 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
balancesbalances=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 преобразует отдельные символы в числа, представляющие их значения в Юникоде.
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 форматы.
D = duration('12:34:56')D = duration
12:34:56
bin2dec | datetime | double | duration | hex2dec | str2double | table