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

相关推荐
hellolianhua1 小时前
大数据hadoop课程笔记
大数据·hadoop·笔记
你的微笑像拥抱1 小时前
vscode 源代码管理
笔记
技术干货贩卖机1 小时前
0基础 | 看懂原理图Datasheet 系列1
笔记·stm32·单片机·嵌入式硬件·学习
柒十三.2 小时前
江科大51单片机笔记【14】直流电机驱动(PWM)
笔记·嵌入式硬件·51单片机
Mapmost2 小时前
【从零打造视觉盛宴·进阶篇】城市场景建模避坑指南,常见问题轻松破!
笔记·强化学习·数据可视化
宇寒风暖2 小时前
HTML 表单详解
前端·笔记·学习·html
skyseey3 小时前
笔记:elment plus table/form 动态添加行 可编辑提交表单
javascript·vue.js·笔记
宇寒风暖4 小时前
HTML嵌入CSS样式超详解(尊享)
前端·css·笔记·学习·html
Ting丶丶5 小时前
Electron入门笔记
javascript·笔记·electron