Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

将数值转换为文本

此示例说明如何将数值转换为文本,并将它们追加到更大的文本片段中。例如,您可能要向绘图添加标签或标题,其中标签包括说明绘图特性的数字。

转换为字符串

在 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. 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 值还允许您在文本中包含特殊字符。例如,度符号的 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 开始提供

您可以使用文本或字面值在代码中表示十六进制和二进制值。推荐的表示方法是将它们写为字面值。您可以分别使用 0x0b 前缀来编写十六进制和二进制字面值。但是,使用 dec2hexdec2bin 函数将这些值表示为文本有时会很有用。

例如,在二进制值中设置一个位。如果您使用字面值指定二进制值,则它将存储为整数。设置其中一个位后,可使用 dec2bin 函数将新的二进制值显示为文本。

register = 0b10010110
register = uint8
    150
register = bitset(register,5,0)
register = uint8
    134
binStr = dec2bin(register)
binStr = 
'10000110'

另请参阅

| | | | |

相关主题