格式化文本gydF4y2Ba
要将数据转换为文本并控制其格式,可以使用gydF4y2Ba格式化操作gydF4y2Ba具有常用的转换函数,如gydF4y2Banum2strgydF4y2Ba
而且gydF4y2BasprintfgydF4y2Ba
.这些操作符控制符号、对齐、有效数字等等。它们类似于gydF4y2BaprintfgydF4y2Ba
函数。格式化文本的典型用途包括用于显示和输出文件的文本。gydF4y2Ba
例如,gydF4y2Ba% fgydF4y2Ba
使用定点表示法将浮点值转换为文本。通过向操作符中添加信息来调整格式,例如gydF4y2Ba% .2fgydF4y2Ba
表示小数点后的两个数字gydF4y2Ba% 12 fgydF4y2Ba
在输出中表示12个字符,根据需要用空格填充。gydF4y2Ba
A = *ones(1,3);TXT = sprintf(gydF4y2Ba'%f | %。2f | %12f'gydF4y2Ba,)gydF4y2Ba
TXT = '3.141593 | 3.14 | 3.141593'gydF4y2Ba
中可以将操作符与普通文本和特殊字符组合在一起gydF4y2Ba格式说明符gydF4y2Ba.例如,gydF4y2Ba\ ngydF4y2Ba
插入换行符。gydF4y2Ba
TXT = sprintf(gydF4y2Ba'显示圆周率:\n %f \n %。2f \n %12f'gydF4y2Ba,)gydF4y2Ba
txt = '显示pi: 3.141593 3.14 3.141593'gydF4y2Ba
支持格式化操作符的函数为金宝appgydF4y2Ba组成gydF4y2Ba
,gydF4y2Banum2strgydF4y2Ba
,gydF4y2BasprintfgydF4y2Ba
,gydF4y2Ba流gydF4y2Ba
、错误处理函数gydF4y2Ba断言gydF4y2Ba
,gydF4y2Ba错误gydF4y2Ba
,gydF4y2Ba警告gydF4y2Ba
,gydF4y2BaMExceptiongydF4y2Ba
.gydF4y2Ba
格式化操作符的字段gydF4y2Ba
格式化操作符可以有六个字段,如图所示。从右到左,字段分别是转换字符、子类型、精度、字段宽度、标志和数字标识符。(操作符中不允许空格字符。在这里显示它们只是为了提高图的可读性。)转换字符是唯一必需的字段,前导字符也是gydF4y2Ba% gydF4y2Ba
的性格。gydF4y2Ba
转换字符gydF4y2Ba
转换gydF4y2Ba字符指定输出的符号。它由单个字符组成,出现在格式说明符的最后。gydF4y2Ba
说明符gydF4y2Ba |
描述gydF4y2Ba |
---|---|
cgydF4y2Ba |
单个的字符。gydF4y2Ba |
dgydF4y2Ba |
十进制(有符号)。gydF4y2Ba |
egydF4y2Ba |
指数表示法(使用小写gydF4y2Ba |
EgydF4y2Ba |
指数表示法(使用大写gydF4y2Ba |
fgydF4y2Ba |
定点表示法。gydF4y2Ba |
ggydF4y2Ba |
越紧凑的gydF4y2Ba |
GgydF4y2Ba |
一样gydF4y2Ba |
ogydF4y2Ba |
八进制表示法(无符号)。gydF4y2Ba |
年代gydF4y2Ba |
字符向量或字符串数组。gydF4y2Ba |
ugydF4y2Ba |
十进表示法(无符号)。gydF4y2Ba |
xgydF4y2Ba |
十六进制表示法(无符号,使用小写字母gydF4y2Ba |
XgydF4y2Ba |
十六进制表示法(无符号,使用大写字母)gydF4y2Ba |
例如,使用不同的转换字符格式化数字46,以十进制、定点、指数和十六进制格式显示该数字。gydF4y2Ba
A = 46*ones(1,4);TXT = sprintf(gydF4y2Ba'%d %f %e %X'gydF4y2Ba,)gydF4y2Ba
txt = '46 46.000000 4.600000e+01 2E'gydF4y2Ba
子类型gydF4y2Ba
子类型字段是紧接在转换字符前面的单个字母字符。如果没有子类型字段,则转换字符gydF4y2Ba%啊gydF4y2Ba
,gydF4y2Ba% xgydF4y2Ba
,gydF4y2Ba% XgydF4y2Ba
,gydF4y2Ba% ugydF4y2Ba
将输入数据视为整数。若要将输入数据视为浮点值并将其转换为八进制、十进制或十六进制表示形式,请使用以下子类型说明符之一。gydF4y2Ba
bgydF4y2Ba |
输入数据是双精度浮点值,而不是无符号整数。例如,要以十六进制形式打印双精度值,请使用如下格式gydF4y2Ba |
tgydF4y2Ba |
输入数据是单精度浮点值,而不是无符号整数。gydF4y2Ba |
精度gydF4y2Ba
格式化操作符中的精度字段是紧接在句点后面的非负整数。例如,在运算符中gydF4y2Ba% 7.3度gydF4y2Ba
,精度为gydF4y2Ba3.gydF4y2Ba
.为gydF4y2Ba% ggydF4y2Ba
运算符,精度指示要显示的有效数字的数目。为gydF4y2Ba% fgydF4y2Ba
,gydF4y2Ba% egydF4y2Ba
,gydF4y2Ba% EgydF4y2Ba
运算符,精度指示小数点右侧显示多少位。gydF4y2Ba
使用precision字段显示不同精度的数字。gydF4y2Ba
TXT = sprintf(gydF4y2Ba% g %。2g %f %.2f'gydF4y2Baπ* 50 *(1、4))gydF4y2Ba
TXT = '157.08 1.6e+02 157.079633 157.08'gydF4y2Ba
虽然可以在输入文本的格式化操作符中指定精度(例如,在gydF4y2Ba% sgydF4y2Ba
操作员),通常没有理由这样做。如果你指定精度为gydF4y2BapgydF4y2Ba
,gydF4y2BapgydF4y2Ba
是否小于输入文本中的字符数,则输出只包含第一个字符gydF4y2BapgydF4y2Ba
字符。gydF4y2Ba
字段宽度gydF4y2Ba
格式化操作符中的字段宽度是一个非负整数,用于指定格式化输入值时输出中的数字或字符数。例如,在运算符中gydF4y2Ba% 7.3度gydF4y2Ba
,字段宽度为gydF4y2Ba7gydF4y2Ba
.gydF4y2Ba
指定不同的字段宽度。要显示每个输出的宽度,请使用gydF4y2Ba|gydF4y2Ba
的性格。默认情况下,当字段宽度大于字符数时,输出文本将使用空格字符填充。gydF4y2Ba
TXT = sprintf(gydF4y2Ba”| % e 15 e | | % % | % 15 f |”gydF4y2Baπ* 50 *(1、4))gydF4y2Ba
TXT = '|1.570796e+02| 1.570796e+02|157.079633| 157.079633|'gydF4y2Ba
当用于文本输入时,字段宽度可以决定是否用空格填充输出文本。如果字段宽度小于或等于输入文本中的字符数,则没有效果。gydF4y2Ba
TXT = sprintf(gydF4y2Ba“% 30年代”gydF4y2Ba,gydF4y2Ba“左侧有空格”gydF4y2Ba)gydF4y2Ba
txt = '空白页'gydF4y2Ba
旗帜gydF4y2Ba
可选标志控制输出文本的附加格式。该表描述了可以用作标志的字符。gydF4y2Ba
字符gydF4y2Ba |
描述gydF4y2Ba |
例子gydF4y2Ba |
---|---|---|
负号(gydF4y2Ba |
左方在其领域内证明转换后的论点。gydF4y2Ba |
% -5.2 dgydF4y2Ba |
加号(gydF4y2Ba |
对于数值,始终打印前导符号字符(gydF4y2Ba |
% + 5.2 dgydF4y2Ba % + 5 sgydF4y2Ba |
空间gydF4y2Ba |
在值之前插入空格。gydF4y2Ba |
% 5.2度gydF4y2Ba |
零(gydF4y2Ba |
Pad用零代替空格。gydF4y2Ba |
% 05.2度gydF4y2Ba |
磅号(gydF4y2Ba |
修改选定的数值转换:gydF4y2Ba
|
% # 5.0度gydF4y2Ba |
对输出进行右对齐和左对齐。默认行为是对输出文本进行右对齐。gydF4y2Ba
TXT = sprintf(gydF4y2Ba'right-justify: %12.2f\nleft-justify: %-12.2f'gydF4y2Ba,gydF4y2Ba...gydF4y2Ba12.3, 12.3)gydF4y2Ba
TXT = 'right-justify: 12.30 left-justify: 12.30 'gydF4y2Ba
显示一个gydF4y2Ba+gydF4y2Ba
在正数处签名。默认行为是省略前导gydF4y2Ba+gydF4y2Ba
在正数处签名。gydF4y2Ba
TXT = sprintf(gydF4y2Ba'no sign: %12.2f\nsign: %+12.2f'gydF4y2Ba,gydF4y2Ba...gydF4y2Ba12.3, 12.3)gydF4y2Ba
TXT = 'no sign: 12.30 sign: +12.30'gydF4y2Ba
用空格和零填充到左边。默认行为是用空格填充。gydF4y2Ba
TXT = sprintf(gydF4y2Ba'Pad带空格:%12.2f\nPad带零:%012.2f'gydF4y2Ba,gydF4y2Ba...gydF4y2Ba5.2, 5.2)gydF4y2Ba
txt = 'Pad带空格:5.20 Pad带零:000000005.20'gydF4y2Ba
请注意gydF4y2Ba
可以在格式化操作符中指定多个标志。gydF4y2Ba
值的标识符gydF4y2Ba
默认情况下,函数如gydF4y2BasprintfgydF4y2Ba
将输入参数中的值按顺序插入到输出文本中。若要以非顺序顺序处理输入参数,请在格式说明符中使用数字标识符指定顺序。参数后面紧跟着整数指定非顺序参数gydF4y2Ba% gydF4y2Ba
符号,后面跟着agydF4y2Ba$gydF4y2Ba
的迹象。gydF4y2Ba
命令按顺序gydF4y2Ba | 按标识符排序gydF4y2Ba |
---|---|
Sprintf('% 1 ! % 1 ! ' ',…'1st','2nd','3rd') ans = '1st 2nd 3rd'gydF4y2Ba |
Sprintf ('%3$s %2$s %1$s',…'1st','2nd','3rd') ans = '3rd 2nd 1st'gydF4y2Ba |
特殊字符gydF4y2Ba
特殊字符可以是输出文本的一部分。但是因为它们不能作为普通文本输入,所以需要特定的字符序列来表示它们。若要在输出文本中插入特殊字符,请使用表中的任意字符序列。gydF4y2Ba
特殊字符gydF4y2Ba |
格式说明符中的表示gydF4y2Ba |
---|---|
单引号gydF4y2Ba |
|
百分比的性格gydF4y2Ba |
|
反斜杠gydF4y2Ba |
|
报警gydF4y2Ba |
|
退格gydF4y2Ba |
|
换页gydF4y2Ba |
|
新行gydF4y2Ba |
|
回车gydF4y2Ba |
|
水平选项卡gydF4y2Ba |
|
垂直制表符gydF4y2Ba |
|
使用Unicode的字符gydF4y2Ba®gydF4y2Ba数值可以用十六进制数表示,gydF4y2Ba |
例子:gydF4y2Ba |
Unicode数值可由八进制数表示的字符,gydF4y2Ba |
例子:gydF4y2Ba |
设置字段宽度和精度gydF4y2Ba
格式化操作符遵循一组规则,将输出文本格式化为指定的字段宽度和精度。您还可以在格式说明符之外指定字段宽度和精度的值,并使用带有字段宽度和精度的编号标识符。gydF4y2Ba
格式化精度和字段宽度规则gydF4y2Ba
该图说明了字段宽度和精度设置如何影响格式化功能的输出。在这个图中,后面的0gydF4y2Ba% gydF4y2Ba
签入格式化操作符意味着在输出文本中添加前导零,而不是空格字符。gydF4y2Ba
如果没有指定精度,则默认为6。gydF4y2Ba
如果精确度gydF4y2Ba
pgydF4y2Ba
是小于输入的小数部分的位数,那么只有gydF4y2BapgydF4y2Ba
小数点后显示数字。输出中的分数值四舍五入。gydF4y2Ba如果精确度gydF4y2Ba
pgydF4y2Ba
是否大于位数gydF4y2BafgydF4y2Ba
在输入的小数部分,那么gydF4y2BapgydF4y2Ba
小数点后显示数字。分数部分向右延伸gydF4y2Bap -gydF4y2Ba
输出为零。gydF4y2Ba如果未指定字段宽度,则默认为gydF4y2Ba
p + 1 + ngydF4y2Ba
,在那里gydF4y2BangydF4y2Ba
是输入值的整个部分的位数。gydF4y2Ba如果字段宽度gydF4y2Ba
wgydF4y2Ba
大于gydF4y2Bap + 1 + ngydF4y2Ba
,则将输出值的整个部分向左填充gydF4y2Baw - (p + 1 + n)gydF4y2Ba
额外的字符。的附加字符是空格字符,除非格式化操作符包含gydF4y2Ba0gydF4y2Ba
国旗。在这种情况下,附加的字符是零。gydF4y2Ba
指定字段宽度和精度外部格式说明符gydF4y2Ba
可以使用来自顺序参数列表的值指定字段宽度和精度。使用星号(gydF4y2Ba*gydF4y2Ba
)来代替格式化操作符的字段宽度或精度字段。gydF4y2Ba
例如,格式化和显示三个数字。在每种情况下,使用星号指定字段宽度或精度来自格式说明符后面的输入参数。gydF4y2Ba
TXT = sprintf(gydF4y2Ba% * f %。*f% *。* f',gydF4y2Ba...gydF4y2Ba15123 .45678,gydF4y2Ba...gydF4y2Ba3、16.42837gydF4y2Ba...gydF4y2Ba6 4π)gydF4y2Ba
TXT = ' 123.456780 16.428 3.1416'gydF4y2Ba
下表描述了示例中每个格式化操作符的效果。gydF4y2Ba
格式化操作符gydF4y2Ba |
描述gydF4y2Ba |
---|---|
|
将width指定为以下输入参数,gydF4y2Ba |
|
将精度指定为以下输入参数,gydF4y2Ba |
|
将width和precision指定为以下输入参数,gydF4y2Ba |
你可以把这两种款式混搭。例如,从以下输入参数获取字段宽度,从格式说明符获取精度。gydF4y2Ba
TXT = sprintf(gydF4y2Ba“% * .2f”gydF4y2Ba, 5, 123.45678)gydF4y2Ba
TXT = '123.46'gydF4y2Ba
在宽度和精度字段中指定编号标识符gydF4y2Ba
还可以使用图中所示的另一种语法,将字段宽度和精度指定为非顺序参数列表中的值。在格式化操作符中,用带有编号的标识符和后面的星号指定字段宽度和精度gydF4y2Ba$gydF4y2Ba
的迹象。使用格式说明符后面的输入参数指定字段宽度和精度的值。gydF4y2Ba
例如,格式化和显示三个数字。在每种情况下,使用编号标识符来指定字段宽度或精度来自格式说明符后面的输入参数。gydF4y2Ba
TXT = sprintf(gydF4y2Ba' % 1 $ * 4 f % 2美元。*5$f %3$*6$.*7$f',gydF4y2Ba...gydF4y2Ba123.45678, 16.42837, pi, 15,3,6,4)gydF4y2Ba
TXT = ' 123.456780 16.428 3.1416'gydF4y2Ba
下表描述了示例中每个格式化操作符的效果。gydF4y2Ba
格式化操作符gydF4y2Ba |
描述gydF4y2Ba |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用标识符的限制gydF4y2Ba
如果任何格式化操作符都包含标识符字段,则格式说明符中的所有操作符都必须包含标识符字段。如果在同一个函数调用中同时使用顺序和非顺序排序,则在顺序标识符和非顺序标识符之间的第一次切换时,输出将被截断。gydF4y2Ba
有效的语法gydF4y2Ba | 无效的语法gydF4y2Ba |
---|---|
Sprintf ('%d %d %d',…1,2,3,4) ans = '1 2 3 4'gydF4y2Ba |
Sprintf ('%d %3$d %d %d',…1,2,3,4) ans = '1 'gydF4y2Ba |
如果函数调用提供的输入参数多于格式说明符中的格式化操作符,则这些操作符将被重用。但是,只有使用顺序排序的函数调用才会重用格式化操作符。当使用编号标识符时,不能重用格式化操作符。gydF4y2Ba
有效的语法gydF4y2Ba | 无效的语法gydF4y2Ba |
---|---|
Sprintf ('%d',1,2,3,4) ans = '1234'gydF4y2Ba |
Sprintf ('%1$d',1,2,3,4) ans = '1'gydF4y2Ba |
如果在输入数据是向量或数组时使用编号标识符,则输出不包含格式化数据。gydF4y2Ba
有效的语法gydF4y2Ba | 无效的语法gydF4y2Ba |
---|---|
V = [1.4 2.7 3.1];sprintf(“%。4 f %。4f%.4f',v) ans = '1.4000 2.7000 3.1000' |
V = [1.4 2.7 3.1];sprintf(' % 3美元。4 f % 1 $。4f%2美元.4f',v) ans = 1×0 empty char array |
另请参阅gydF4y2Ba
组成gydF4y2Ba
|gydF4y2Ba流gydF4y2Ba
|gydF4y2Banum2strgydF4y2Ba
|gydF4y2BasprintfgydF4y2Ba