主要内容gydF4y2Ba

格式化文本gydF4y2Ba

要将数据转换为文本并控制其格式,可以使用gydF4y2Ba格式化操作gydF4y2Ba使用常用的转换函数,例如gydF4y2Banum2strgydF4y2Ba和gydF4y2BasprintfgydF4y2Ba.这些操作符控制符号、对齐、有效数字等。它们类似于gydF4y2BaprintfgydF4y2Ba函数。格式化文本的典型用途包括用于显示和输出文件的文本。gydF4y2Ba

例如,gydF4y2Ba% fgydF4y2Ba使用定点表示法将浮点值转换为文本。通过向操作符添加信息来调整格式,例如gydF4y2Ba% .2fgydF4y2Ba表示小数点后的两个数字,或gydF4y2Ba% 12 fgydF4y2Ba若要在输出中表示12个字符,可根据需要使用空格填充。gydF4y2Ba

=π*的(1、3);txt = sprintf (gydF4y2Ba' % f | %。2 f | % 12 f 'gydF4y2Ba,)gydF4y2Ba
TXT = '3.141593 | 3.14 | 3.141593'gydF4y2Ba

可以将操作符与普通文本和特殊字符组合在一起gydF4y2Ba格式说明符gydF4y2Ba.例如,gydF4y2Ba\ ngydF4y2Ba插入换行符。gydF4y2Ba

txt = sprintf (gydF4y2Ba'显示pi: \n %f \n %。2 f \ n % 12 f 'gydF4y2Ba,)gydF4y2Ba
txt = '显示圆周率:3.141593 3.14 3.141593'gydF4y2Ba

支持格式化操作符的函数万博1manbetxgydF4y2Ba组成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

指数表示法(使用小写gydF4y2BaegydF4y2Ba,如gydF4y2Ba3.1415 e + 00gydF4y2Ba).gydF4y2Ba

EgydF4y2Ba

指数表示法(使用大写gydF4y2BaEgydF4y2Ba,如gydF4y2Ba3.1415 e + 00gydF4y2Ba).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

格式化操作符中的precision字段是紧跟着句点的非负整数。例如,在操作符中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'Pad left with空格'gydF4y2Ba)gydF4y2Ba
txt = ' Pad left with空格'gydF4y2Ba

旗帜gydF4y2Ba

可选标志控制输出文本的附加格式。该表描述了可以用作标志的字符。gydF4y2Ba

字符gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

负号(gydF4y2Ba-gydF4y2Ba)gydF4y2Ba

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

% -5.2 dgydF4y2Ba

加号(gydF4y2Ba+gydF4y2Ba)gydF4y2Ba

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

% + 5.2 dgydF4y2Ba
% + 5 sgydF4y2Ba

空间gydF4y2Ba

在值之前插入一个空格。gydF4y2Ba

% 5.2度gydF4y2Ba

零(gydF4y2Ba0gydF4y2Ba)gydF4y2Ba

用零代替空格。gydF4y2Ba

% 05.2度gydF4y2Ba

井号(gydF4y2Ba#gydF4y2Ba)gydF4y2Ba

修改选定的数值转换:gydF4y2Ba

  • 为gydF4y2Ba%啊gydF4y2Ba,gydF4y2Ba% xgydF4y2Ba,或gydF4y2Ba% XgydF4y2Ba、打印gydF4y2Ba0gydF4y2Ba,gydF4y2Ba0 xgydF4y2Ba,或gydF4y2Ba0 xgydF4y2Ba前缀。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 = '右对齐:12.30左对齐: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 with空格:%12.2f\nPad with零:%012.2f'gydF4y2Ba,gydF4y2Ba...gydF4y2Ba5.2, 5.2)gydF4y2Ba
txt = 'Pad with空格:5.20 Pad with零:000000005.20'gydF4y2Ba

请注意gydF4y2Ba

可以在格式化操作符中指定多个标志。gydF4y2Ba

值的标识符gydF4y2Ba

默认情况下,函数如gydF4y2BasprintfgydF4y2Ba按顺序将输入参数中的值插入到输出文本中。若要以非连续顺序处理输入参数,请在格式说明符中使用数字标识符指定顺序。的后面紧接一个整数指定非顺序参数gydF4y2Ba% gydF4y2Ba符号,后面跟着agydF4y2Ba$gydF4y2Ba的迹象。gydF4y2Ba

命令按顺序gydF4y2Ba 命令标识符gydF4y2Ba
sprintf (' % s % s % s ',…'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

\ bgydF4y2Ba

换页gydF4y2Ba

\ fgydF4y2Ba

新行gydF4y2Ba

\ ngydF4y2Ba

回车gydF4y2Ba

r \gydF4y2Ba

水平选项卡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

该图说明了字段宽度和精度设置如何影响格式化函数的输出。在这个图中,后面的0gydF4y2Ba% gydF4y2Ba格式操作符中的符号意味着在输出文本中添加前导零,而不是空格字符。gydF4y2Ba

  • 如果没有指定精度,则默认为6。gydF4y2Ba

  • 如果精度gydF4y2BapgydF4y2Ba是否小于输入的小数部分的位数gydF4y2BapgydF4y2Ba小数点后显示数字。小数值在输出中四舍五入。gydF4y2Ba

  • 如果精度gydF4y2BapgydF4y2Ba是否大于数字的个数gydF4y2BafgydF4y2Ba在输入的小数部分gydF4y2BapgydF4y2Ba小数点后显示数字。小数部分向右扩展gydF4y2Bap -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.42837gydF4y2Ba...gydF4y2Ba6 4π)gydF4y2Ba
TXT = ' 123.456780 16.428 3.1416'gydF4y2Ba

该表描述了示例中每个格式化操作符的效果。gydF4y2Ba

格式化操作符gydF4y2Ba

描述gydF4y2Ba

% * fgydF4y2Ba

指定width为以下输入参数,gydF4y2Ba15gydF4y2Ba.gydF4y2Ba

% * f。gydF4y2Ba

将precision指定为以下输入参数,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指定第四个输入参数,gydF4y2Ba15gydF4y2Ba,如字段宽度gydF4y2Ba

% 2 $ * f(5美元)gydF4y2Ba

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

* 5美元。gydF4y2Ba指定第五个输入参数,gydF4y2Ba3.gydF4y2Ba,如精度gydF4y2Ba

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

3美元gydF4y2Ba指定第三个输入参数,gydF4y2Baπ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 %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