В этом примере показано, как преобразовать числовые значения в текст и добавить их к большим частям текста. Например, можно хотеть добавить метку или заголовок к графику, где метка включает число, описывающее характеристику графика.
Перед R2016b преобразуйте в векторы символов с помощью num2str
.
Чтобы преобразовать число в строку, которая его представляет, используйте string
функция.
str = string(pi)
str = "3.1416"
The 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 для символа степени равно 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'
char
| compose
| dec2bin
| dec2hex
| plus
| string