MATLAB之fprintf
fprintf
将数据写⼊⽂本⽂件
语法
fprintf(fileID,formatSpec,A1,...,An)
fprintf(formatSpec,A1,...,An)
nbytes = fprintf(___)
说明
fprintf(,,) 按列顺序将 formatSpec 应⽤于数组 A1,...An 的所有元素,并将数据写⼊到⼀个⽂本⽂件。fprintf 使⽤在对 fopen 的调⽤中指定的编码⽅案。
fprintf(,) 设置数据的格式并在屏幕上显⽰结果。
= fprintf(___) 使⽤前述语法中的任意输⼊参数返回 fprintf 所写⼊的字节数。
⽰例
输出字⾯⽂本和数组值
将多个数值和字⾯⽂本输出到屏幕。
A1 = [9.9, 9900];
A2 = [8.8,  7.7 ; ...
8800, 7700];
formatSpec = 'X is %4.2f meters or %8.3f mm\n';
fprintf(formatSpec,A1,A2)
X is 9.90 meters or 9900.000 mm
X is 8.80 meters or 8800.000 mm
X is 7.70 meters or 7700.000 mm
formatSpec 输⼊中的 %4.2f 指定输出中每⾏的第⼀个值为浮点数,字段宽度为四位数,包括⼩数点后的两位数。formatSpec 输⼊中的
%8.3f 指定输出中每⾏的第⼆个值为浮点数,字段宽度为⼋位数,包括⼩数点后的三位数。\n 为新起⼀⾏的控制字符。
将双精度值输出为整数
显式将包含分式的双精度值转换为整数值。
a = [1.02 3.04 5.06];
fprintf('%d\n',round(a));
1
3
5
formatSpec 输⼊中的 %d 将向量 round(a) 中的每个值作为有符号整数输出。\n 为新起⼀⾏的控制字
符。
将表格数据写⼊⽂本⽂件
将指数函数的短表写⼊到名为 的⽂本⽂件。
x = 0:.1:1;
A = [x; exp(x)];
fileID = fopen('','w');
fprintf(fileID,'%6s %12s\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\n',A);
fclose(fileID);
第⼀个对 fprintf 的调⽤输出标题⽂本 x 和 exp(x),第⼆个调⽤输出变量 A 的值。
如果打算使⽤ Microsoft® 记事本读取⽂件,请使⽤ '\r\n' ⽽不是 '\n' 移到新⾏。例如,将对 fprintf 的调⽤替换为下列项:
fprintf(fileID,'%6s %12s\r\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\r\n',A);
通过 type 命令查看⽂件的内容。
x      exp(x)
0.00  1.00000000
0.10  1.10517092
0.20  1.22140276
0.30  1.34985881
0.40  1.49182470
0.50  1.64872127
0.60  1.82211880
0.70  2.01375271
0.80  2.22554093
0.90  2.45960311
1.00
2.71828183
获取写⼊⽂件的字节数
将数据写⼊⽂件并返回所写⼊的字节数。
将数据数组 A 写⼊⽂件并获取 fprintf 所写⼊的字节数。
A = magic(4);
fileID = fopen('','w');
nbytes = fprintf(fileID,'%5d %5d %5d %5d\n',A)
nbytes = 96
fprintf 函数向⽂件中写⼊了 96 个字节。
关闭⽂件。
fclose(fileID);
通过 type 命令查看⽂件的内容。
type('')
16    5    9    4
2    11    7    14
3    10    6    15
13    8    12    1
在命令⾏窗⼝中显⽰超链接
在屏幕上显⽰超链接()。
url = 'www.mathworks';
sitename = 'The MathWorks Web Site';
fprintf('<a href = "%s">%s</a>\n',url,sitename)
formatSpec 输⼊中的 %s 指⽰变量 url 和 sitename 的值应作为⽂本输出。
输⼊参数
fileID - ⽂件标识符
1 (默认) |
2 | 标量
⽂件标识符,指定为下列值之⼀:
从 获取的⽂件标识符。
1 表⽰标准输出(屏幕)。
2 表⽰标准错误。
数据类型: double
formatSpec - 输出字段的格式
格式化操作符
输出字段的格式,使⽤格式化操作符指定。formatSpec 还可以包括普通⽂本和特殊字符。
formatSpec 可以是⽤单引号引起来的字符向量,从 R2016b 开始,也可以是字符串标量。
格式化操作符
格式化操作符以百分号 % 开头,以转换字符结尾。转换字符是必需的。您也可以在 % 和转换字符之间指定标识符、标志、字段宽度、精度和⼦类型操作符。(操作符之间的空格⽆效,在这⾥显⽰空格只是为了便于阅读。)
转换字符
此表显⽰了要将数值和字符数据格式化为⽂本的转换字符。
值类型转换详细信息
有符号整数%d 或 %i以 10 为基数
⽆符号整数%u以 10 为基数
%o以 8 为基数(⼋进制)
%x以 16 为基数(⼗六进制),⼩写字母 a–f
%X与 %x 相同,⼤写字母 A–F
%f定点记数法(使⽤精度操作符指定⼩数点后的位数。)
%e指数记数法,例如 3.141593e+00(使⽤精度操作符指定⼩数点后的位数)。
浮点数%E与 %e 相同,但为⼤写,例如 3.141593E+00(使⽤精度操作符指定⼩数点后的位数)。
%g更紧凑的 %e 或 %f,不带尾随零(使⽤精度操作符指定有效数字位数。)
%G更紧凑的 %E 或 %f,不带尾随零(使⽤精度操作符指定有效数字位数。)
字符或字符串
%c单个字符
%s字符向量或字符串数组。输出⽂本的类型与 formatSpec 的类型相同。
值类型转换详细信息
可选操作符
可选标识符、标志、字段宽度、精度和⼦类型操作符进⼀步定义了输出⽂本的格式。
标识符
处理函数输⼊参数的顺序。使⽤语法 n$,其中 n 代表函数调⽤中其他输⼊参数的位置。
⽰例:('%3$s %2$s %1$s %2$s','A','B','C') 将输⼊参数 'A'、'B'、'C' 输出为:C B A B。
注意:如果输⼊参数为数组,则不能使⽤标识符指定该输⼊参数中的特定数组元素。
标志
字段宽度
要输出的最低字符数。字段宽度运算符可以是数字,也可以是指向输⼊参数的星号 (*)。
⽰例:输⼊参数 ('%12d',intmax) 等效于 ('%*d', 12, intmax)。
除⾮标志另⾏指定,否则该函数使⽤空格填充值之前的字段宽度。
精度
对于 %f、%e 或 %E ⼩数点右侧的位数
⽰例:'%.4f' 将 pi 输出为 '3.1416'
对于 %g 或 %G有效位数
⽰例:'%.4g' 将 pi 输出为 '3.142'
精度操作符可以是数字,也可以是指向参数的星号 (*)。
⽰例:输⼊参数 ('%6.4f', pi) 等效于 ('%*.*f', 6, 4, pi)。
注意
如果您为浮点值指定的精度操作符所表⽰的精度超出输⼊数值数据类型的精度,则在指定精度内,结果与输⼊值可能不匹配。结果取决于您的计算机硬件和操作系统。
⼦类型
可以使⽤⼦类型操作符将浮点值显⽰为⼋进制、⼗进制或⼗六进制值。⼦类型操作符紧邻转换字符之前。此表显⽰了可使⽤⼦类型的转换。
输⼊值类型⼦类型和转换字符输出值类型
浮点数%bx 或 %bX
%bo
%bu
双精度⼗六进制、⼋进制或⼗进制值
例如:%bx 将 pi 输出为 400921fb54442d18
%tx 或 %tX
%to
%tu
单精度⼗六进制、⼋进制或⼗进制值
例如:%tx 将 pi 输出为 40490fdb
格式化操作符前或后的⽂本
formatSpec 还可以在百分号 % 前添加其他⽂本,或者在转换字符后添加其他⽂本。⽂本可以为:要打印的普通⽂本。
您⽆法作为普通⽂本输⼊的特殊字符。此表显⽰了如何在 formatSpec 中表⽰特殊字符。
特殊字符表⽰形式单引号''
百分⽐字符%%
反斜杠\\
警报\a
退格符\b
换页符\f
换⾏符\n
回车符\r
fprintf格式⽔平制表符\t
垂直制表符\v
其 Unicode® 数值可以通过⼗六进制数 N 表⽰的字符\xN
⽰例:sprintf('\x5A') 返回 'Z'
其 Unicode 数值可以通过⼋进制数 N 表⽰的字符\N
⽰例:sprintf('\132') 返回 'Z'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。