num2str函数将数字转换为字符数组。
语法
s = num2str(A)
s = num2str(A,precision)
s = num2str(A,formatSpec)
说明
s = num2str(A)
将数值数组转换为表示数字的字符数组。输出格式取决于原始值的量级。num2str
对使用数值为绘图添加标签和标题非常有用。
s = num2str(A,precision)
返回表示数字的字符数组,最大有效位数由 precision
指定。
s = num2str(A,formatSpec)
将 formatSpec
指定的格式应用到 A
所有元素。
示例
1.浮点值的默认转换
将 pi
和 eps
返回的浮点值转换为字符向量。
s = num2str(pi)
s =
'3.1416'
s = num2str(eps)
s =
'2.2204e-16'
2.指定精度
指定浮点值的最大有效位数。
A = gallery('normaldata',[2,2],0);
s = num2str(A,3)
s = 2x16 char array
'-0.433 0.125'
' -1.67 0.288'
3.指定格式
指定浮点值数组的宽度、精度及其他格式。
A = gallery('uniformdata',[2,3],0) * 9999;
s = num2str(A,'%10.5e\n')
s = 2x35 char array
'9.50034e+03...'
'2.31115e+03...'
格式 '%10.5e'
使用具有五个小数位数的指数格式输出各个值,'\n'
输出换行符。
输入参数
1.A
- 输入数组
数值数组
输入数组,指定为数值数组。
数据类型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
复数支持: 是
2.precision
- 有效数字最大位数
正整数
输出字符串中的有效数字最大位数,指定为正整数。如果您指定的 precision
超出输入浮点数据类型的精度,则结果可能与您指定的精度的输入值不匹配。结果取决于您的计算机硬件和操作系统。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
3.formatSpec
- 输出字段的格式
格式化操作符
输出字段的格式,使用格式化操作符指定。formatSpec
还可以包括普通文本和特殊字符。
formatSpec
可以是用单引号引起来的字符向量,从 R2016b 开始,也可以是字符串标量。
格式化操作符
格式化操作符以百分号 %
开头,以转换字符结尾。转换字符是必需的。您也可以在 %
和转换字符之间指定标识符、标志、字段宽度、精度和子类型操作符。(操作符之间的空格无效,在这里显示空格只是为了便于阅读。)
转换字符
此表显示了要将数值和字符数据格式化为文本的转换字符。
值类型 | 转换 | 详细信息 |
---|---|---|
有符号整数 |
|
以 10 为基数 |
无符号整数 |
|
以 10 为基数 |
|
以 8 为基数(八进制) |
|
|
以 16 为基数(十六进制),小写字母 |
|
|
与 |
|
浮点数 |
|
定点记数法(使用精度操作符指定小数点后的位数。) |
|
指数记数法,例如 |
|
|
与 |
|
|
更紧凑的 |
|
|
更紧凑的 |
|
字符或字符串 |
|
单个字符 |
|
字符向量或字符串数组。输出文本的类型与 |
可选操作符
可选标识符、标志、字段宽度、精度和子类型操作符进一步定义了输出文本的格式。
标识符
处理函数输入参数的顺序。使用语法
,其中 n
$n
代表函数调用中其他输入参数的位置。
示例:('%3$s %2$s %1$s %2$s','A','B','C')
将输入参数 'A'
、'B'
、'C'
输出为:C B A B
。
注意:如果输入参数为数组,则不能使用标识符指定该输入参数中的特定数组元素。
标志
|
左对齐。 |
|
始终为任何数值输出符号字符(+ 或 –)。 |
|
在值之前插入空格。 |
|
在值之前补零以填充字段宽度。 |
|
修改选定的数值转换:
示例: |
字段宽度
要输出的最低字符数。字段宽度操作符可以是数字,也可以是指向输入参数的星号 (*
)。
当您将 *
指定为字段宽度操作符时,其他输入参数必须指定打印宽度和要打印的值。宽度和值可以是参数对组,也可以是数值数组中的对组。使用 *
作为字段宽度操作符时,您可以打印具有不同宽度的不同值。
示例:输入参数 ('%12d',intmax)
等效于 ('%*d',12,intmax)
。
示例:输入参数 ('%*d',[2 10 5 100])
返回 '10 100'
,其中两个空格分配给 10
,五个空格分配给 100
。您也可以将字段宽度和值指定为多个参数,如 ('%*d',2,10,5,100)
中所示。
除非标志另行指定,否则该函数使用空格填充值之前的字段宽度。
精度
对于 |
小数点右侧的位数 |
对于 |
有效位数 |
精度操作符可以是数字,也可以是指向参数的星号 (*
)。
当您将 *
指定为字段精度操作符时,其他输入参数必须指定打印精度和要打印的值。精度和值可以是参数对组,也可以是数值数组中的对组。使用 *
作为精度操作符时,您可以打印具有不同精度的不同值。
将 *.*
指定为字段宽度和精度操作符时,必须以三元组形式指定字段宽度、精度和值。
示例:输入参数 ('%.4f',pi)
等效于 ('%.*f',4,pi)
。
示例:输入参数 ('%6.4f',pi)
等效于 ('%.*f',6,4,pi)
。
示例:输入参数 ('%*.*f',6,4,pi,9,6,exp(1))
返回 '3.1416 2.718282'
,其中以 9
和 6
分别作为 exp(1)
输出的字段宽度和精度。
子类型
可以使用子类型操作符将浮点值显示为八进制、十进制或十六进制值。子类型操作符紧邻转换字符之前。此表显示了可使用子类型的转换。
输入值类型 |
子类型和转换字符 |
输出值类型 |
---|---|---|
浮点数 |
|
双精度十六进制、八进制或十进制值 |
|
单精度十六进制、八进制或十进制值 |
格式化操作符前或后的文本
formatSpec
还可以在百分号 %
前添加其他文本,或者在转换字符后添加其他文本。文本可以为:
要打印的普通文本。
您无法作为普通文本输入的特殊字符。此表显示了如何在 formatSpec
中表示特殊字符。
特殊字符 |
表示形式 |
---|---|
单引号 |
|
百分比字符 |
|
反斜杠 |
|
警报 |
|
退格符 |
|
换页符 |
|
换行符 |
|
回车符 |
|
水平制表符 |
|
垂直制表符 |
|
其 Unicode® 数值可以通过十六进制数 |
示例: |
其 Unicode 数值可以通过八进制数 |
示例: |
使用格式化操作符进行转换时要注意的行为
数值转换仅输出复数的实部。
如果指定不适合数据的转换(例如数值的文本转换),MATLAB® 将改写指定的转换并使用 %e
。
示例:'%s'
将 pi
转换为 3.141593e+00
。
如果对整数值应用文本转换(%c
或 %s
),MATLAB 会将对应于有效字符代码的值转换为字符。
示例:'%s'
将 [65 66 67]
转换为 ABC
。
数据类型: char
| string
输出参数
1.s
- 输入数组的文本表示形式
字符数组
输入数组的文本表示形式,以字符数组的形式返回。
提示
num2str
不接受 formatSpec
输入参数中的位置标识符。例如,num2str([14 15],'%2$X %1$o)
将返回错误。
位置标识符指定格式化操作符处理函数的输入参数的顺序,而不是处理输入数组的元素的顺序。当您调用 num2str
时,只有一个输入参数包含要转换的数字。
算法
num2str
将删除字符数组中的任何前导空格,即使 formatSpec
包含空格字符标志也是如此。例如,num2str(42.67,'% 10.2f')
返回一个 1×5 字符数组 '42.67'
。