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

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

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

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

Figure contains an axes object. The axes object 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 также позволяет вам включать специальные символы в текст. Например, значение 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'

Смотрите также

| | | | |

Похожие темы