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

相关推荐
m0_6896182810 小时前
水凝胶发生器,不对称设计妙,医电应用前景广
笔记
Ace'10 小时前
每日一题&&学习笔记
笔记·学习
挥剑决浮云 -10 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
新晓·故知11 小时前
<基于递归实现线索二叉树的构造及遍历算法探讨>
数据结构·经验分享·笔记·算法·链表
魔理沙偷走了BUG12 小时前
【数学分析笔记】第4章第4节 复合函数求导法则及其应用(3)
笔记·数学分析
NuyoahC13 小时前
算法笔记(十一)——优先级队列(堆)
c++·笔记·算法·优先级队列
这可就有点麻烦了14 小时前
强化学习笔记之【TD3算法】
linux·笔记·算法·机器学习
Ljubim.te16 小时前
软件设计师——数据结构
数据结构·笔记
speop18 小时前
【笔记】I/O总结王道强化视频笔记
笔记·音视频