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