Преобразование числовых значений в текст

В этом примере показано, как преобразовать числовые значения в текст и добавить их к большим частям текста. Например, можно хотеть добавить метку или заголовок к графику, где метка включает число, описывающее характеристику графика.

Преобразование в строки

Перед 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)

Figure contains an axes. The axes with title Sine Wave, Frequency = 0.15915 Hz contains an object of type line.

Иногда существующий текст хранится в векторах символов или ячеках векторов символов. Однако 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'

См. также

| | | | |

Похожие темы