Matlab学习笔记5——fprintf

将数据写入文本文件

语法

fprintf(fileID,formatSpec,A1,…,An)
fprintf(formatSpec,A1,…,An)
nbytes = fprintf(___)

说明

fprintf(fileID,formatSpec,A1,…,An) 按列顺序将 formatSpec 应用于数组 A1,…An 的所有元素,并将数据写入到一个文本文件。fprintf 使用在对 fopen 的调用中指定的编码方案。

fprintf(formatSpec,A1,…,An) 设置数据的格式并在屏幕上显示结果。

nbytes = 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 为新起一行的控制字符。

将表格数据写入文本文件

将指数函数的短表写入到名为 exp.txt 的文本文件。

x = 0:.1:1;
A = [x; exp(x)];fileID = fopen('exp.txt','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);

MATLAB® 导入函数、所有 UNIX® 应用程序以及 Microsoft Word 和写字板都将 ‘\n’ 识别为换行指示符。

通过 type 命令查看文件的内容。

type exp.txt
 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('myfile.txt','w');
nbytes = fprintf(fileID,'%5d %5d %5d %5d\n',A)

nbytes = 96
fprintf 函数向文件中写入了 96 个字节。

关闭文件。

fclose(fileID);

通过 type 命令查看文件的内容。

type(‘myfile.txt’)
16 5 9 4
2 11 7 14
3 10 6 15
13 8 12 1

在命令行窗口中显示超链接

在屏幕上显示超链接(MathWorks 公司网站)。

url = 'https://www.mathworks.com';
sitename = 'The MathWorks Web Site';fprintf('<a href = "%s">%s</a>\n',url,sitename)

formatSpec 输入中的 %s 指示变量 url 和 sitename 的值应作为文本输出。

输入参数
fileID - 文件标识符
1 (默认) | 2 | 标量
文件标识符,指定为下列值之一:

从 fopen 获取的文件标识符。

1 表示标准输出(屏幕)。

2 表示标准错误。

数据类型: double

formatSpec - 输出字段的格式
格式化操作符
输出字段的格式,使用格式化操作符指定。formatSpec 还可以包括普通文本和特殊字符。

如果 formatSpec 包括表示转义字符的字面文本,如 \n,则 fprintf 将转换转义字符。

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 s %2 ss %1 s s %2 ss’,‘A’,‘B’,‘C’) 将输入参数 ‘A’、‘B’、‘C’ 输出为:C B A B。

注意:如果输入参数为数组,则不能使用标识符指定该输入参数中的特定数组元素。

标志

‘–’

左对齐。
示例:%-5.2f
示例:%-10s

‘+’

始终为任何数值输出符号字符(+ 或 –)。
示例:%+5.2f
右对齐文本。
示例:%+10s

’ ’

在值之前插入空格。
示例:% 5.2f

‘0’

在值之前补零以填充字段宽度。
例如:%05.2f

‘#’

修改选定的数值转换:

对于 %o、%x 或 %X,将输出 0、0x 或 0X 前缀。

对于 %f、%e 或 %E,即使精度为零也将输出小数点。

对于 %g 或 %G,不删除尾随零或小数点。

示例:

字段宽度

要输出的最低字符数。字段宽度操作符可以是数字,也可以是指向输入参数的星号 (*)。

当您将 * 指定为字段宽度操作符时,其他输入参数必须指定打印宽度和要打印的值。宽度和值可以是参数对组,也可以是数值数组中的对组。使用 * 作为字段宽度操作符时,您可以打印具有不同宽度的不同值。

示例:输入参数 (‘%12d’,intmax) 等效于 (‘%*d’,12,intmax)。

示例:输入参数 (‘%*d’,[2 10 5 100]) 返回 ‘10 100’,其中两个空格分配给 10,五个空格分配给 100。您也可以将字段宽度和值指定为多个参数,如 (‘%*d’,2,10,5,100) 中所示。

除非标志另行指定,否则该函数使用空格填充值之前的字段宽度。

精度

对于 %f、%e 或 %E

小数点右侧的位数
示例:‘%.4f’ 将 pi 输出为 ‘3.1416’

对于 %g 或 %G

有效位数
示例:‘%.4g’ 将 pi 输出为 ‘3.142’

精度操作符可以是数字,也可以是指向参数的星号 (*)。

当您将 * 指定为字段精度操作符时,其他输入参数必须指定打印精度和要打印的值。精度和值可以是参数对组,也可以是数值数组中的对组。使用 * 作为精度操作符时,您可以打印具有不同精度的不同值。

. 指定为字段宽度和精度操作符时,必须以三元组形式指定字段宽度、精度和值。

示例:输入参数 (‘%.4f’,pi) 等效于 (‘%.*f’,4,pi)。

示例:输入参数 (‘%6.4f’,pi) 等效于 (‘%.*f’,6,4,pi)。

示例:输入参数 (‘%*.*f’,6,4,pi,9,6,exp(1)) 返回 ‘3.1416 2.718282’,其中以 9 和 6 分别作为 exp(1) 输出的字段宽度和精度。

注意

如果您为浮点值指定的精度操作符所表示的精度超出输入数值数据类型的精度,则在指定精度内,结果与输入值可能不匹配。结果取决于您的计算机硬件和操作系统。

子类型

可以使用子类型操作符将浮点值显示为八进制、十进制或十六进制值。子类型操作符紧邻转换字符之前。此表显示了可使用子类型的转换。

输入值类型

子类型和转换字符

输出值类型

浮点数

%bx 或 %bX
%bo
%bu

双精度十六进制、八进制或十进制值
例如:%bx 将 pi 输出为 400921fb54442d18

%tx 或 %tX
%to
%tu

单精度十六进制、八进制或十进制值
例如:%tx 将 pi 输出为 40490fdb

格式化操作符前或后的文本

formatSpec 还可以在百分号 % 前添加其他文本,或者在转换字符后添加其他文本。文本可以为:

要打印的普通文本。

您无法作为普通文本输入的特殊字符。此表显示了如何在 formatSpec 中表示特殊字符。

特殊字符

表示形式

单引号

‘’

百分比字符

%%

反斜杠

\

警报

\a

退格符

\b

换页符

\f

换行符

\n

回车符

\r

水平制表符

\t

垂直制表符

\v

其 Unicode® 数值可以通过十六进制数 N 表示的字符

\xN

示例:sprintf(‘\x5A’) 返回 ‘Z’

其 Unicode 数值可以通过八进制数 N 表示的字符

\N

示例:sprintf(‘\132’) 返回 ‘Z’

使用格式化操作符进行转换时要注意的行为

数值转换仅输出复数的实部。

如果指定不适合数据的转换(例如数值的文本转换),MATLAB 将改写指定的转换并使用 %e。

示例:‘%s’ 将 pi 转换为 3.141593e+00。

如果对整数值应用文本转换(%c 或 %s),MATLAB 会将对应于有效字符代码的值转换为字符。

示例:‘%s’ 将 [65 66 67] 转换为 ABC。

A1,…,An - 数值数组或字符数组
标量 | 向量 | 矩阵 | 多维数组
数值数组或字符数组,指定为标量、向量、矩阵或多维数组。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char

输出参数
全部折叠
nbytes - 字节数
标量
fprintf 所写入的字节数,作为标量返回。在写入文件时,nbytes 由字符编码所决定。向屏幕输出数据时,nbytes 是屏幕上显示字符的个数。

提示
读取函数 sscanf 和 fscanf 的格式设定符不同于写入函数 sprintf 和 fprintf 的格式。读取函数不支持精度字段。宽度字段在写入函数中指定最小值,但在读取函数中指定最大值。

如果您指定了无效的格式化操作符或特殊字符,则 fprintf 会输出所有文本,直到出现无效的操作符或字符,并丢弃其余部分。

示例:如果 formatSpec 是 ‘value = %z’,则 fprintf 将输出 ‘value =’,因为 %z 不是格式化操作符。

示例:如果 formatSpec 是 ‘character \x99999 = %s’,则 fprintf 将输出 ‘character’,因为 \x99999 不是有效的特殊字符。

Matlab学习笔记5——fprintf相关推荐

  1. MATLAB学习笔记2:MATLAB基础知识(下)

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  2. MATLAB学习笔记3:MATLAB编程基础(前半)

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  3. MATLAB学习笔记1:MATLAB概述

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  4. Matlab学习笔记——数据文件定位

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...

  5. MATLAB学习笔记(二)

    MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...

  6. MATLAB学习笔记(一)

    MATLAB 一.安装的目录结构 二.常用的菜单及工具 布局 设置路径 设置工作路径 三.常用命令 四. 基础知识 数据类型 复数类型 `inf 和 NaN` 字符与字符串 函数句柄 结构体 结构体的 ...

  7. linspace函数matlab_从零开始的matlab学习笔记——(29)泰勒逼近函数

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图....更多内容尽在个人专栏:matlab学习 上一节我们成功制作了能自己转圈的三维螺旋线,这里我们再来 ...

  8. matlab数组平方的计算自定义函数_从零开始的matlab学习笔记——(38)简单数论计算函数:取整,gcd,lcm,质数,全排列...

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏:matlab学习 翻了翻优化工具箱,发现内容 ...

  9. 取模(mod)与取余(rem)的区别——Matlab学习笔记

    取模(mod)与取余(rem)的区别--Matlab学习笔记http://www.bieryun.com/1099.html 昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem ...

最新文章

  1. iOS-常用的自定义控件
  2. lucene源代码学习之 lucene的经典打分过程
  3. 【Mybatis】 mapper 继承
  4. .Net 分布式云平台基础服务建设说明概要
  5. Unity(一)Unity脚本程序开发
  6. JAVA入门级教学之(方法重写/方法重载)
  7. zabbix简介及部署
  8. Zabbix server is not running:the information displayed may not be current
  9. python脚本操作excel
  10. 电脑进入pe时蓝屏_进入PE系统也会蓝屏?运行PE系统蓝屏原因及解决方法
  11. MATLAB | 读取视频并保存帧图像
  12. Asp.Net Core 密码加密方案
  13. XXL之整合SpringBoot
  14. 360隐私保护器直指腾讯QQ 360真的发飙了,百度旁观!
  15. vs无法打开源文件_南美预选:乌拉圭vs巴西,双方核心都无法上场,谁来打开胜利之门?...
  16. 本科毕设-基于C8051单片机的身份识别系统设计
  17. 三款超火的国外壁纸应用,让你每天都用新手机
  18. graphviz画图之张柏芝前夫是谢霆锋
  19. WebStorm开发应用——前端页面
  20. 知云文献,Endnote简易使用指南

热门文章

  1. Amaze UI 入门引导
  2. vue2中component和components在组件注册和路由中的区别
  3. vue使用canvas生成地图图例
  4. 第一次作业:对计算机学科学习的规划和探讨
  5. python调用高德地图api 可视化_Python调用高德地图API实现经纬度换算、地图可视化...
  6. 做一个小特效,让星星亮起来,非常简单!
  7. 基于墨刀的界面原型设计——应用集APP
  8. 网站构建(namesilo+老薛主机+wordpress)
  9. 三国杀online网页版服务器更新,[OL][公告] 4月15日《三国杀OL》版本更新公告
  10. python计算折扣价_计算折扣的Python函数