主要内容gydF4y2Ba

格式化文本gydF4y2Ba

若要将数据转换为文本并控制其格式,可以使用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

说明符gydF4y2Ba

描述gydF4y2Ba

cgydF4y2Ba

单个的字符。gydF4y2Ba

dgydF4y2Ba

十进制记数法(签署)。gydF4y2Ba

egydF4y2Ba

指数符号(使用小写gydF4y2BaegydF4y2Ba,如在gydF4y2Ba3.1415 e + 00gydF4y2Ba).gydF4y2Ba

EgydF4y2Ba

指数表示法(使用大写gydF4y2BaEgydF4y2Ba,如在gydF4y2Ba3.1415E + 00.gydF4y2Ba).gydF4y2Ba

fgydF4y2Ba

定点表示法。gydF4y2Ba

ggydF4y2Ba

更紧凑gydF4y2Ba% egydF4y2Ba或者gydF4y2Ba% fgydF4y2Ba.(不打印无关紧要的零。)gydF4y2Ba

GgydF4y2Ba

一样gydF4y2Ba% ggydF4y2Ba,但使用大写字母gydF4y2BaEgydF4y2Ba.gydF4y2Ba

ogydF4y2Ba

八进制表示法(无符号)。gydF4y2Ba

年代gydF4y2Ba

字符向量或字符串数组。gydF4y2Ba

ugydF4y2Ba

十进制记数法(无符号)。gydF4y2Ba

xgydF4y2Ba

十六进制表示法(无符号,使用小写字母gydF4y2Ba一个gydF4y2Ba- - - - - -gydF4y2BafgydF4y2Ba).gydF4y2Ba

XgydF4y2Ba

十六进制表示法(使用大写字母而无符号gydF4y2Ba一个gydF4y2Ba- - - - - -gydF4y2BaFgydF4y2Ba).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,gydF4y2Ba% xgydF4y2Ba,gydF4y2Ba% XgydF4y2Ba, 和gydF4y2Ba% ugydF4y2Ba将输入数据视为整数。要将输入数据视为浮点值,而是将它们转换为八进制,十进制或十六进制表示,请使用以下子类型说明符之一。gydF4y2Ba

bgydF4y2Ba

输入数据是双精度浮点值,而不是无符号整数。例如,要以十六进制形式打印双精度值,可以使用如下格式gydF4y2Ba% bxgydF4y2Ba.gydF4y2Ba

tgydF4y2Ba

输入数据是单精度浮点值而不是无符号整数。gydF4y2Ba

精确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

格式化操作符中的字段宽度是一个非负整数,用于指定格式化输入值时输出中的数字或字符数。例如,在运算符中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)gydF4y2Ba

在其字段中左对齐转换的参数。gydF4y2Ba

% -5.2 dgydF4y2Ba

加号 (gydF4y2Ba+gydF4y2Ba)gydF4y2Ba

对于数值,始终打印前导符号字符(gydF4y2Ba+gydF4y2Ba或者gydF4y2Ba-gydF4y2Ba).gydF4y2Ba
对于文本值,在其字段中右对齐转换后的参数。gydF4y2Ba

%+ 5.2d.gydF4y2Ba
%+ 5s.gydF4y2Ba

空间gydF4y2Ba

在值之前插入空格。gydF4y2Ba

% 5.2度gydF4y2Ba

零(gydF4y2Ba0gydF4y2Ba)gydF4y2Ba

填充0而不是空格。gydF4y2Ba

% 05.2度gydF4y2Ba

英镑符号 (gydF4y2Ba#gydF4y2Ba)gydF4y2Ba

修改所选数字转换:gydF4y2Ba

  • 为gydF4y2Ba%啊gydF4y2Ba,gydF4y2Ba% xgydF4y2Ba, 或者gydF4y2Ba% XgydF4y2Ba, 打印gydF4y2Ba0gydF4y2Ba,gydF4y2Ba0x.gydF4y2Ba, 或者gydF4y2Ba0x.gydF4y2Ba前缀。gydF4y2Ba

  • 为gydF4y2Ba% fgydF4y2Ba,gydF4y2Ba% egydF4y2Ba, 或者gydF4y2Ba% EgydF4y2Ba,打印小数点,即使精度为0。gydF4y2Ba

  • 为gydF4y2Ba% ggydF4y2Ba或者gydF4y2Ba% GgydF4y2Ba,不要删除后面的零或小数点。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

价值标识符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

\ bgydF4y2Ba

换页gydF4y2Ba

\ fgydF4y2Ba

新行gydF4y2Ba

\ ngydF4y2Ba

回车gydF4y2Ba

\rgydF4y2Ba

水平选项卡gydF4y2Ba

\ tgydF4y2Ba

垂直制表符gydF4y2Ba

v \gydF4y2Ba

字符的UnicodegydF4y2Ba®gydF4y2Ba数值可以用十六进制数表示,gydF4y2BaNgydF4y2Ba

\ xNgydF4y2Ba

例子:gydF4y2Basprintf(“\ x5A”)gydF4y2Ba返回gydF4y2Ba'z'gydF4y2Ba

Unicode数值可以用八进制表示的字符,gydF4y2BaNgydF4y2Ba

\ NgydF4y2Ba

例子:gydF4y2BaSprintf('\ 132')gydF4y2Ba返回gydF4y2Ba'z'gydF4y2Ba

设置字段宽度和精度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

例如,格式和显示三个数字。在每种情况下,使用星号来指定字段宽度或精度来自格式说明符后面的输入参数。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

% * fgydF4y2Ba

指定width作为下面的输入参数,gydF4y2Ba15.gydF4y2Ba.gydF4y2Ba

% * f。gydF4y2Ba

指定精度作为下面的输入参数,gydF4y2Ba3.gydF4y2Ba.gydF4y2Ba

%*。*FgydF4y2Ba

将宽度和精度指定为以下输入参数,gydF4y2Ba6gydF4y2Ba, 和gydF4y2Ba4gydF4y2Ba.gydF4y2Ba

你可以混合两种样式。例如,从以下输入参数和格式说明符中获取字段宽度。gydF4y2Ba

txt = sprintf (gydF4y2Ba“% * .2f”gydF4y2Ba5, 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

f % 1 * 4美元gydF4y2Ba

1美元gydF4y2Ba指定第一个输入参数,gydF4y2Ba123.45678gydF4y2Ba,作为价值gydF4y2Ba

* 4美元gydF4y2Ba指定第四个输入参数,gydF4y2Ba15.gydF4y2Ba,作为字段宽度gydF4y2Ba

%2 $。* 5 $ fgydF4y2Ba

2美元gydF4y2Ba指定第二个输入参数,gydF4y2Ba16.42837gydF4y2Ba,作为价值gydF4y2Ba

。* 5 $gydF4y2Ba指定第五个输入参数,gydF4y2Ba3.gydF4y2Ba,作为精确度gydF4y2Ba

% 3 * 6美元。* 7美元gydF4y2Ba

3美元gydF4y2Ba指定第三个输入参数,gydF4y2BaPI.gydF4y2Ba,作为价值gydF4y2Ba

* 6美元gydF4y2Ba指定第六个输入参数,gydF4y2Ba6gydF4y2Ba,作为字段宽度gydF4y2Ba

。* 7 $gydF4y2Ba指定第七个输入参数,gydF4y2Ba4gydF4y2Ba,作为精确度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|gydF4y2Ba

相关话题gydF4y2Ba