MATLAB 基础知识 数据类型 数据类型转换 将数值转换为文本

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

转换为字符串

在 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)

《MATLAB 基础知识 数据类型 数据类型转换 将数值转换为文本》

有时现有文本存储在字符向量或字符向量元胞数组中。但是,当另一项操作数是字符串时,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'
    原文作者:结冰架构
    原文地址: https://blog.csdn.net/u013883025/article/details/117988570
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞