В этом примере показано, как преобразовать текст в числовые значения, которые он представляет. Как правило, вы должны выполнить такие преобразования, когда у вас есть текст, который представляет числа, которые будут нанесены или использованы в вычислениях. Для примера текст может быть получен из текстового файла или электронной таблицы. Если вы еще не преобразовали его в числовые значения при импорте в 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
The 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 значение. The 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