Matlab自学笔记二十七:详解格式化文本sprintf各参数设置方法

1. 一个程序引例

上篇文章已经介绍了格式化文本的初步应用,程序示例如下:

sprintf('|%f\n|%.2f\n|%8.2f',pi*ones(1,3))

2. 格式化操作符各字段的含义解析

格式化操作符可以有六个字段,只有主字符%和转换格式是必需的,其他都是可选的,如下图所示:

2.1 转换格式

对于上述格式化操作符的六个字段,从右往左依次说明,首先说 转换格式,不同的标识符代表了不通的数据类型,如下表所示:

字段 描述
c 单个字符
d 十进制符号(有符号)
e 指数表示法(使用小写e,如3.1415e+00)
E 指数表示法(使用大写E,如3.1415E+00)
f 定点表示法(常用)
g %e或更紧凑的%f(不重要的零不显示)
G 同%g,但使用大写E
o 八进制符号(无符号)
s 字符向量或字符串数​​组
u 十进制符号(无符号)
x 十六进制符号(无符号,使用小写字母a- f)
X 十六进制符号(无符号,使用大写字母A- F)

2.2 子类型

一般的,使用整型数转换成八进制,十进制或十六进制;

同理,对于类型%o,%x,%X,和%u,如果没有子类型字段,转换字符把输入数据视为整数;

对于上述类型,如果需要把输入数据视为浮点值,并将其转换为八进制,十进制或十六进制表示形式,使用b或t作为子类型说明符;

b表示把输入数据看作双精度浮点值而不是无符号整数;

t表示把输入数据看作单精度浮点值而不是无符号整数;

2.3 精度和字段宽度

精度和字段宽度是一个非负整数,用句点隔开;

对于%g,精度表示显示有效数字的数目;

对于%f,%e和%E,精度表示小数点右边显示数字的数目;

字段宽度用于指定输出中的位数或字符数;

当设定字段宽度大于字符数时,默认使用空格补齐;

如果未指定精度,则默认为六位;

如果指定精度p小于输入值小数部分的位数,则在小数点后面按四舍五入方式只显示p位数字;

如果指定精度p大于输入值小数部分的位数f,则在小数点后面显示p位数字,小数部分向右延伸,p-f位用0填充;

如果未指定字段宽度,则默认为p+1+n,其中n是输入值整数部分的位数;

如果指定字段宽度w大于p+1+n,则输出值的左侧将被填充w-(p+1+n)个其他字符,除非指定为0,否则默认填充空格字符;

如果字段宽度小于等于输入文本中的字符数,则不起作用;

2.4 标志

有些表示填充符号,有些表示特殊设置,如下表所示:

字符 描述
减号(-) 在字段宽度内令转换后的参数左对齐 %-5.2d
加号(+) 对于数字值,显示为前导符号 对于文本值,在字段宽度内令转换后的参数右对齐 %+5.2d %+5s
空格( ) 在值之前填充空格。 % 5.2f
零(0) 用零填充而不是空格 %05.2f
英镑符号(#) 修改选定的数字转换: 对于%o,%x或%X,显示为0,0x或0X前缀 对于%f,%e或者%E,即使精度为0,也可以显示小数点 对于%g或%G,不要删除尾随零或小数点 %#5.0f

2.5 识别符

默认情况下,sprintf将输入参数的值按顺序显示到输出文本中;

要以非默认顺序处理,使用数字标识符指定顺序;

用紧跟在%后面,并且尾随$的一个整数指定非连续参数;

2.6 补充特殊字符

特殊字符可以是输出文本的一部分,但是因为它们不能作为普通文本输入,需要通过特定的转义字符表示它们,如表

特殊字符 表示方法
单引号 ''
百分号 %%
反斜杠 \\
报警 \a
退格 \b
换页 \f
换行 \n
回车 \r
水平tab \t
垂直tab \v
字符的Unicode数字值可以由十六进制数来表示 \xN 例如: sprintf('\x3D')返回'='
字符的Unicode数字值可以用八进制数来表示 \N 例如: sprintf('\102')返回'B'

2.7 补充

字段宽度和精度由外部指定。可以使用顺序参数列表中的值指定字段宽度和精度,使用星号(*)作为字段宽度或精度的占位符。

如果输入参数比格式运算符多,则格式运算符将被重用。注意,只有使用顺序排序格式操作符被重用。使用编号标识符时不能重用。

编号识别符和普通顺序不混用,会在两者转换时输出停止。

更多精彩相关内容

1.9/Matlab矩阵索引/下标索引/线性索引/逻辑索引/黄金级必备知识点

35.2 Matlab循环语句

1.49/Matlab实时脚本/写论文必备技能

1.32/Matlab格式化文本字符sprintf

Matlab基础入门1.4 脚本编程

End

相关推荐
不会调制解调的猫1 小时前
笔记 | 内网服务器通过wifi穿透,设置流量走向
运维·服务器·笔记
程序员大雄学编程2 小时前
「机器学习笔记7」决策树学习:从理论到实践的全面解析(上)
笔记·决策树·机器学习
聪明的笨猪猪3 小时前
Java Spring “Bean” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
bnsarocket4 小时前
Verilog和FPGA的自学笔记3——仿真文件Testbench的编写
笔记·fpga开发·verilog·自学
丰锋ff5 小时前
2025 年真题配套词汇单词笔记(考研真相)
笔记·考研
小熊猫程序猿7 小时前
Datawhale 算法笔记 AI硬件与机器人大模型 (五) Isaac Sim 入门
人工智能·笔记·机器人
不太可爱的叶某人10 小时前
【学习笔记】kafka权威指南——第10章 监控kafka (7-10章只做了解)
笔记·学习·kafka
张人玉11 小时前
C# TCP 客户端开发笔记(TcpClient)
笔记·tcp/ip·c#
不太可爱的叶某人14 小时前
【学习笔记】kafka权威指南——第6章 可靠的数据传递
笔记·学习·kafka
研猛男16 小时前
0、FreeRTOS编码和命名规则
笔记·stm32·freertos