Преобразование чисел в символы и обратно
Здесь представлены функции, которые преобразуют числа в обычном формате double в их символьное представление (запись чисел) в формате char.
Функция num2str(A). Преобразование числового массива А в символьный массив, представляющий эти числа в MATLAB с точностью до четырех десятичных разрядов и экспоненциальным представлением, если требуется. Обычно используется при выводе графиков совместно с функциями title, xlabel. ylabel или text.
num2str(A,precision). Выполняет преобразование массива А в строку символов с точностью, определенной аргументом precision. Аргумент precision определяет число разрядов в выходной строке.
num2str(A,format). Выполняет преобразование массива чисел А, используя заданный формат format. По умолчанию принимается формат, который использует четыре разряда после десятичной точки для чисел с фиксированной или плавающей точкой. Например,
- 0.4057 0.9169 0.8936
- 0.9355 0.4103 0.0579
str = % массив типа char размера 2-на-22
- 0.41 0.92 0.89
- 0.94 0.41 0.058
Функция int2str(X). Преобразование массива X целых чисел в массив символов (цифр) целых чисел. Элементы массива X нс целые, то они округляются до целых чисел и строится массив символов, содержащий символьные представления округленных целых чисел. Аргумент X может быть скаляром, вектором или матрицей. Например, >> int2str (133.3) ans = 133
Ответ является массивом типа char размера 1-па-З.
Функция mat2str(A). Преобразует матрицу А в одну символьную строку так, как она задается в MATLAB, подходящую для ввода функции eval. При этом числа преобразуются с полной точностью. Если элемент матрицы не скаляр, то он заменяется на [].
Функция mat2str(A,n) преобразует матрицу А в строку символов, используя точность до п цифр после десятичной точки. Функция cval(str) осуществляет обратное преобразование. Например,
mat2str(А,3) ans = [0.406 0.917 0.894;0.935 0.41 0.0579] % массив типа char 1×36
Функция str2num(s). Выполняет преобразование массива символов числа в ASCII-символах, в числовой массив double. Например,
Выходной массив ans имеет тин double. Обратите особое внимание, что при этом можно вводить знаки + и — в любом месте строки. Math Works рекомендует использовать str2num с осторожностью и по возможности заменять ее на str2double.
Функция str2double(‘str’). Выполняет преобразование строки числа str, которая представлена в ASCII-символах, в число с двойной точностью. При этом + и -могут быть только в начале строки. Отмстим, что данная функция обеспечивает переход от символьного представления математических выражений в MATLAB к их числовым значениям;
Преобразуйте текст в числовые значения
В этом примере показано, как преобразовать текст в числовые значения, которые он представляет. Как правило, необходимо выполнить такие преобразования, когда у вас есть текст, который представляет числа, которые будут строиться или использоваться в вычислениях. Например, текст может прибыть из текстового файла или электронной таблицы. Если вы уже не преобразовали его в числовые значения при импорте его в 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')
Преобразуйте числовые значения в текст
В этом примере показано, как преобразовать числовые значения в текст и добавить их к большим частям текста. Например, вы можете хотеть добавить метку или заголовок на график, где метка включает номер, который описывает характеристику графика.
Преобразование в строки
Перед R2016b преобразуйте в векторы символов с помощью num2str .
Чтобы преобразовать номер в строку, которая представляет его, используйте string функция.
str = string(pi)
str = "3.1416"
string функция преобразует числовой массив в массив строк, имеющий тот же размер.
A = [256 pi 8.9e-3]; str = string(A)
str = 1x3 string "256" "3.141593" "0.0089"
Можно задать формат синтезируемого текста с помощью compose функция, которая принимает спецификаторы формата для точности, ширины поля и экспоненциального представления.
str = compose("%9.7f",pi)
str = "3.1415927"
Если вход является числовым массивом, то compose возвращает массив строк. Возвратите массив строк, который представляет числа с помощью экспоненциального представления.
A = [256 pi 8.9e-3]; str = compose("%5.2e",A)
str = 1x3 string "2.56e+02" "3.14e+00" "8.90e-03"
Добавьте числа в строки
Перед R2016b преобразуйте числа в векторы символов и конкатенируйте символы в скобках, [] .
Самый простой способ объединить текст и числа состоит в том, чтобы использовать plus оператор + ). Этот оператор автоматически преобразует числовые значения в строки, когда другие операнды являются строками.
Например, постройте синусоиду. Вычислите частоту волны и добавьте строку, представляющую то значение в заголовке графика.
X = linspace(0,2*pi); Y = sin(X); plot(X,Y) freq = 1/(2*pi); str = "Sine Wave, Frequency = " + freq + " Hz"
str = "Sine Wave, Frequency = 0.15915 Hz"
title(str)
Иногда существующий текст хранится в векторах символов или массивах ячеек из символьных векторов. Однако plus оператор также автоматически преобразует те типы данных к строкам, когда другой операнд является строкой. Чтобы объединить числовые значения с теми типами данных, сначала преобразуйте числовые значения в строки, и затем используйте plus объединить текст.
str = 'Sine Wave, Frequency = ' + string(freq) + ' Hz'>
str = "Sine Wave, Frequency = 0.15915 Hz"
Коды символов
Если ваши данные содержат целые числа, которые представляют значения Unicode®, используют char функционируйте, чтобы преобразовать значения в соответствующие символы. Выход является вектором символов или массивом.
u = [77 65 84 76 65 66]; c = char(u)
c = 'MATLAB'
Преобразование значений Unicode также позволяет вам включать специальные символы в текст. Например, значение Unicode для символа степени равняется 176. Добавить char(176) к строке используйте plus .
deg = char(176); temp = 21; str = "Temperature: " + temp + deg + "C"
str = "Temperature: 21°C"
Перед R2016b используйте num2str преобразовать числовое значение в вектор символов, и затем конкатенировать.
str = ['Temperature: ' num2str(temp) deg 'C']
str = 'Temperature: 21°C'
Шестнадцатеричные и двоичные значения
Начиная с R2019b
Можно представлять шестнадцатеричные и двоичные значения в коде или текст использования или использование литералов . Рекомендуемый способ представлять их состоит в том, чтобы записать им как литералы. Можно записать шестнадцатеричные и бинарные литералы с помощью 0x и 0b префиксы соответственно. Однако может иногда быть полезно представлять такие значения как текст, с помощью dec2hex или dec2bin функции.
Например, установите немного в двоичном значении. Если вы задаете двоичное значение с помощью литерала, то оно хранится как целое число. После установки одного из битов отобразите новое двоичное значение как текст с помощью dec2bin функция.
register = 0b10010110
register = uint8 150
register = bitset(register,5,0)
register = uint8 134
binStr = dec2bin(register)
binStr = '10000110'
Смотрите также
Похожие темы
- Преобразуйте текст в числовые значения
- Шестнадцатеричные и двоичные значения
- Преобразование между массивами datetime, числами и текстом
- Форматирование текста
- Unicode и значения ASCII
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Преобразование символов и строк MatLab
int2str(X) — округляет элементы массива X до целых чисел и возвращает массив символов, содержащих символьные представления округленных целых чисел. Аргумент X может быть скаляром, вектором или матрицей.
8.0500 1.0500 6.0500
3.0500 5.0500 7.0500
4.0500 9.0500 2.0500
mat2str(A) — преобразует матрицу А в единую строку; если элемент матрицы не скаляр, то он заменяется на [ ], при этом учитываются 15 знаков после десятичной точки;
mat2str(A,n) — преобразует матрицу А в строку, используя точность до n цифр после десятичной точки. Функция eval(str) осуществляет обратное преобразование.
0.9501 0.8913 0.8214
0.2311 0.7621 0.4447
0.6068 0.4565 0.6154
0.4860 0.0185 0.7919
[0.95 0.89 0.82:0.23 0.76 0.44:0.61 0.46 0.62:0.49 0.019 0.79]
num2str(A) — выполняет преобразование массива А в строку символов str с точностью до четырех десятичных разрядов и экспоненциальным представлением, если требуется. Обычно используется при выводе графиков совместно с title, xlabel. ylabel или text;
num2str(A,precision) — выполняет преобразование массива А в строку символов str с максимальной точностью, определенной аргументом precision. Аргумент precision определяет число разрядов в выходной строке;
num2str(A,format) — выполняет преобразование массива чисел А, используя заданный формат format. По умолчанию принимается формат, который использует четыре разряда после десятичной точки для чисел с фиксированной или плавающей точкой.
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
1 0.5 0.5 0.4 0.9 0.20.9 0.02 0.6 0.7 0.60.8 0.8 0.8 0.2
str2double( ‘str’) — выполняет преобразование численной строки s, которая представлена в ASCII-символах, в число с двойной точностью. При этом + и -могут быть только в начале строки.
Обратите особое внимание на последнюю функцию, поскольку именно она в MATLAB 6 обычно обеспечивает переход от символьного представления математических выражений к их вычисленным численным значениям;
str2num(s) — выполняет преобразование численного массива символов — матрицы или строки s, который представлен в ASCII-символах, в матрицу (массив размерности 2).
Обратите особое внимание, что при этом можно вводить знаки + и — в любом месте строки. Предыдущая функция выдала бы NaN. Но фирма MathWorks рекомендует использовать str2num с осторожностью и по возможности заменять ее на str2double.
