若要将数据转换为文本并控制其格式,可以使用gydF4y2Ba格式化操作gydF4y2Ba使用常用的转换函数,例如gydF4y2Banum2str.gydF4y2Ba
和gydF4y2BasprintfgydF4y2Ba
.这些运算符控制表示法、对齐方式、有效数字等等。它们类似于gydF4y2BaprintfgydF4y2Ba
函数。格式化文本的典型用途包括用于显示和输出文件的文本。gydF4y2Ba
例如,gydF4y2Ba% fgydF4y2Ba
使用定点表示法将浮点值转换为文本。通过向操作员添加信息来调整格式,例如gydF4y2Ba% .2fgydF4y2Ba
表示小数点后的两位,或gydF4y2Ba% 12 fgydF4y2Ba
要在输出中表示12个字符,根据需要使用空格填充。gydF4y2Ba
=π*的(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'显示pi:\ n%f \ n%.2f \ n%12f'gydF4y2Ba,)gydF4y2Ba
txt = '显示pi: 3.141593 3.14 3.141593'gydF4y2Ba
支持格式运算符的功能金宝appgydF4y2Ba撰写gydF4y2Ba
,gydF4y2Banum2str.gydF4y2Ba
,gydF4y2BasprintfgydF4y2Ba
,gydF4y2Ba流gydF4y2Ba
,以及错误处理函数gydF4y2Ba断言gydF4y2Ba
,gydF4y2Ba错误gydF4y2Ba
,gydF4y2Ba警告gydF4y2Ba
, 和gydF4y2BaMExceptiongydF4y2Ba
.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
一个= 46 * 1 (1,4);txt = sprintf (gydF4y2Ba'%d %f %e %X'gydF4y2Ba,)gydF4y2Ba
TXT = '46 46.000000 4.600000E + 01 2E'gydF4y2Ba
子类型字段是一个单个字母字符,它紧接在转换字符之前。没有子类型字段,转换字符gydF4y2Ba%啊gydF4y2Ba
,gydF4y2Ba% xgydF4y2Ba
,gydF4y2Ba% XgydF4y2Ba
, 和gydF4y2Ba% ugydF4y2Ba
将输入数据视为整数。要将输入数据视为浮点值,而是将它们转换为八进制,十进制或十六进制表示,请使用以下子类型说明符之一。gydF4y2Ba
bgydF4y2Ba |
输入数据是双精度浮点值,而不是无符号整数。例如,要以十六进制形式打印双精度值,可以使用如下格式gydF4y2Ba |
tgydF4y2Ba |
输入数据是单精度浮点值而不是无符号整数。gydF4y2Ba |
格式化运算符中的精度字段是一个不紧接在一段时间内的非负整数。例如,在运算符中gydF4y2Ba% 7.3度gydF4y2Ba
,精度是gydF4y2Ba3.gydF4y2Ba
.为了gydF4y2Ba% ggydF4y2Ba
操作员,精度指示要显示的有效数字的数量。为了gydF4y2Ba% fgydF4y2Ba
,gydF4y2Ba% egydF4y2Ba
, 和gydF4y2Ba% EgydF4y2Ba
操作符,精度指示在小数点右侧显示多少位。gydF4y2Ba
使用精度字段显示不同精度的数字。gydF4y2Ba
txt = sprintf (gydF4y2Ba% g %。2 g 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% 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 |
% -5.2 dgydF4y2Ba |
加号 (gydF4y2Ba |
对于数值,始终打印前导符号字符(gydF4y2Ba |
%+ 5.2d.gydF4y2Ba %+ 5s.gydF4y2Ba |
空间gydF4y2Ba |
在值之前插入空格。gydF4y2Ba |
% 5.2度gydF4y2Ba |
零(gydF4y2Ba |
填充0而不是空格。gydF4y2Ba |
% 05.2度gydF4y2Ba |
英镑符号 (gydF4y2Ba |
修改所选数字转换:gydF4y2Ba
|
% # 5.0度gydF4y2Ba |
左右对齐输出。默认行为是对输出文本进行右对齐。gydF4y2Ba
txt = sprintf (gydF4y2Ba对齐:% 12.2 f \ nleft-justify: % -12.2 f '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 ='带空格的垫:5.20垫与零:000000005.20'gydF4y2Ba
请注意gydF4y2Ba
可以在格式化操作符中指定多个标志。gydF4y2Ba
缺省情况下,功能如gydF4y2BasprintfgydF4y2Ba
将输入参数中的值按顺序插入到输出文本中。若要以不连续顺序处理输入参数,请在格式说明符中使用数字标识符指定顺序。的后面紧跟着一个整数,指定不连续参数gydF4y2Ba% gydF4y2Ba
符号,后面跟着agydF4y2Ba$gydF4y2Ba
的迹象。gydF4y2Ba
命令按顺序gydF4y2Ba | 由标识符订购gydF4y2Ba |
---|---|
sprintf (' % s % s % s ',…'1 ','2 ','3 ') ans = '1 2 3 'gydF4y2Ba |
Sprintf('%3 $ s%2 $ s%1 $ s',...'1st','2nd','3rd')ANS ='第3号第1次'gydF4y2Ba |
特殊字符可以是输出文本的一部分。但由于它们无法作为普通文本输入,因此它们需要特定的字符序列来表示它们。要将特殊字符插入输出文本,请使用表中的任何字符序列。gydF4y2Ba
特殊字符gydF4y2Ba |
格式说明符中的表示gydF4y2Ba |
---|---|
单引号gydF4y2Ba |
|
百分比的性格gydF4y2Ba |
|
反斜杠gydF4y2Ba |
|
警报gydF4y2Ba |
|
退格gydF4y2Ba |
|
换页gydF4y2Ba |
|
新行gydF4y2Ba |
|
回车gydF4y2Ba |
|
水平选项卡gydF4y2Ba |
|
垂直制表符gydF4y2Ba |
|
字符的UnicodegydF4y2Ba®gydF4y2Ba数值可以用十六进制数表示,gydF4y2Ba |
例子:gydF4y2Ba |
Unicode数值可以用八进制表示的字符,gydF4y2Ba |
例子:gydF4y2Ba |
格式化操作符遵循一组将输出文本格式化为指定字段宽度和精度的规则。您还可以在格式说明符之外为字段宽度和精度指定值,并使用带编号的标识符来表示字段宽度和精度。gydF4y2Ba
该图说明了字段宽度和精度设置如何影响格式化函数的输出。在这个图中,0跟在gydF4y2Ba% gydF4y2Ba
格式化操作符中的符号意味着向输出文本添加前导零,而不是空格字符。gydF4y2Ba
如果未指定精度,则默认为6。gydF4y2Ba
如果精确gydF4y2BapgydF4y2Ba
小于输入的分数部分中的数字数量,然后只能gydF4y2BapgydF4y2Ba
小数点后显示数字。小数值在输出中四舍五入。gydF4y2Ba
如果精确gydF4y2BapgydF4y2Ba
是否大于位数gydF4y2BafgydF4y2Ba
在输入的小数部分,那么gydF4y2BapgydF4y2Ba
小数点后显示数字。小数部分向右扩展gydF4y2BaP-F.gydF4y2Ba
输出为零。gydF4y2Ba
如果未指定字段宽度,则默认为gydF4y2Bap + 1 + ngydF4y2Ba
,在那里gydF4y2BangydF4y2Ba
是输入值的整个部分的位数。gydF4y2Ba
如果字段宽度gydF4y2BawgydF4y2Ba
大于gydF4y2Bap + 1 + ngydF4y2Ba
,则输出值的整个部分被填充到左侧gydF4y2Baw - (p + 1 + n)gydF4y2Ba
额外的字符。除非格式化操作符包括gydF4y2Ba0gydF4y2Ba
国旗。在这种情况下,额外的字符是零。gydF4y2Ba
可以使用序列参数列表中的值指定字段宽度和精度。使用星号(gydF4y2Ba*gydF4y2Ba
)来代替格式化操作符的字段宽度或精度字段。gydF4y2Ba
例如,格式和显示三个数字。在每种情况下,使用星号来指定字段宽度或精度来自格式说明符后面的输入参数。gydF4y2Ba
txt = sprintf (gydF4y2Ba% * f %。*f%*。*F',gydF4y2Ba...gydF4y2Ba15123 .45678,gydF4y2Ba...gydF4y2Ba3,16.42837,gydF4y2Ba...gydF4y2Ba6 4π)gydF4y2Ba
TXT = ' 123.456780 16.428 3.1416'gydF4y2Ba
该表描述了每个格式化操作员在该示例中的效果。gydF4y2Ba
格式化运营商gydF4y2Ba |
描述gydF4y2Ba |
---|---|
|
指定width作为下面的输入参数,gydF4y2Ba |
|
指定精度作为下面的输入参数,gydF4y2Ba |
|
将宽度和精度指定为以下输入参数,gydF4y2Ba |
你可以混合两种样式。例如,从以下输入参数和格式说明符中获取字段宽度。gydF4y2Ba
txt = sprintf (gydF4y2Ba“% * .2f”gydF4y2Ba5, 123.45678)gydF4y2Ba
txt = ' 123.46 '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 |
---|---|
Sprintf ('%d %d %d',…1,2,3,4) ans = '1 2 3 4'gydF4y2Ba |
Sprintf ('%d %3$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
|gydF4y2Banum2str.gydF4y2Ba
|gydF4y2BasprintfgydF4y2Ba